{"id":1873,"date":"2019-08-10T10:50:52","date_gmt":"2019-08-10T15:50:52","guid":{"rendered":"http:\/\/blog.espol.edu.ec\/edelros\/?p=1873"},"modified":"2020-09-26T15:01:46","modified_gmt":"2020-09-26T20:01:46","slug":"control-remoto-ir-archivo-ino","status":"publish","type":"post","link":"https:\/\/blog.espol.edu.ec\/girni\/control-remoto-ir-archivo-ino\/","title":{"rendered":"5.3 IoT WiFi Control Remoto IR: Archivo.ino"},"content":{"rendered":"<h4>Instrucciones<\/h4>\n<p>Las instrucciones enfocadas en cada sensor o actividad se resumen en funciones, tratando de mantener la simplicidad del lazo principal.<\/p>\n<p>Las instrucciones incorporan las siguientes caracter\u00edsticas:<\/p>\n<ul>\n<li>el boton config_IR, una vez presionado espera hasta recibir una se\u00f1al infraroja que se lee, y graba.<\/li>\n<li>el Env\u00edo de la se\u00f1al se realiza con la instrucci\u00f3n MQTT o\u00a0 desde Home Assistant<\/li>\n<li>Usa el LED_LeeIR\u00a0 como indicador de estado de lectura o activaci\u00f3n de control remoto.<\/li>\n<li>Se emite la se\u00f1al de control mediante la variable senal_ONOFF<\/li>\n<li>Se controla el estado de lectura del sensor\/decodificador infrarojo mediante MQTT, y la respuesta se emite a la conexi\u00f3n serial.<\/li>\n<li>La temperatura y humedad se actualizan con el parametro \"intervalo\" cuyo primer n\u00famero es minutos<\/li>\n<\/ul>\n<pre><span style=\"color: #95a5a6\">\/* ESP8266 IRremoteESP8266: Receptor Infrarojo<\/span>\n<span style=\"color: #95a5a6\"> * edelros@espol.edu.ec<\/span>\n<span style=\"color: #95a5a6\"> * Debe usar un sensor detector\/demodulador conectado al Receptor_Pin.<\/span>\n<span style=\"color: #95a5a6\"> * \u00a0\u00a0Based on Mark Szabo's Version 0.2 June, 2017 and<\/span>\n<span style=\"color: #95a5a6\"> * \u00a0\u00a0Ken Shirriff's IrsendDemo Version 0.1 July, 2009<\/span>\n<span style=\"color: #95a5a6\"> * \u00a0\u00a0<\/span><u><span style=\"color: #95a5a6\">https:\/\/github.com\/markszabo\/IRremoteESP8266<\/span><\/u> \n<span style=\"color: #95a5a6\">* \u00a0Para usar, actualice las secciones de:<\/span>\n<span style=\"color: #95a5a6\"> * \u00a0- WIFI:Router, MQTT:Servidor, MQTT:Dispositivo<\/span>\n<span style=\"color: #95a5a6\"> * \u00a0ESP-01 al usar GPIO1 y GPIO3,(Tx,Rx), NO USE Serial.print()<\/span>\n<span style=\"color: #95a5a6\">*\/<\/span>\n<span style=\"color: #5e6d03\">#include<\/span> <span style=\"color: #434f54\">&lt;<\/span><span style=\"color: #d35400\">ESP8266WiFi<\/span><span style=\"color: #434f54\">.<\/span><span style=\"color: #000000\">h<\/span><span style=\"color: #434f54\">&gt;<\/span>\n<span style=\"color: #5e6d03\">#include<\/span> <span style=\"color: #434f54\">&lt;<\/span><b><span style=\"color: #d35400\">PubSubClient<\/span><\/b><span style=\"color: #434f54\">.<\/span><span style=\"color: #000000\">h<\/span><span style=\"color: #434f54\">&gt;<\/span>\n\n<span style=\"color: #5e6d03\">#include<\/span> <span style=\"color: #434f54\">&lt;<\/span><span style=\"color: #000000\">IRremoteESP8266<\/span><span style=\"color: #434f54\">.<\/span><span style=\"color: #000000\">h<\/span><span style=\"color: #434f54\">&gt;<\/span>\n<span style=\"color: #5e6d03\">#include<\/span> <span style=\"color: #434f54\">&lt;<\/span><b><span style=\"color: #d35400\">IRrecv<\/span><\/b><span style=\"color: #434f54\">.<\/span><span style=\"color: #000000\">h<\/span><span style=\"color: #434f54\">&gt;<\/span>\n<span style=\"color: #5e6d03\">#include<\/span> <span style=\"color: #434f54\">&lt;<\/span><span style=\"color: #000000\">IRutils<\/span><span style=\"color: #434f54\">.<\/span><span style=\"color: #000000\">h<\/span><span style=\"color: #434f54\">&gt;<\/span>\n<span style=\"color: #5e6d03\">#include<\/span> <span style=\"color: #434f54\">&lt;<\/span><b><span style=\"color: #d35400\">IRsend<\/span><\/b><span style=\"color: #434f54\">.<\/span><span style=\"color: #000000\">h<\/span><span style=\"color: #434f54\">&gt;<\/span>\n\n<span style=\"color: #5e6d03\">#include<\/span> <span style=\"color: #434f54\">&lt;<\/span><b><span style=\"color: #d35400\">EEPROM<\/span><\/b><span style=\"color: #434f54\">.<\/span><span style=\"color: #000000\">h<\/span><span style=\"color: #434f54\">&gt;<\/span>\n\n<span style=\"color: #5e6d03\">#include<\/span> <span style=\"color: #434f54\">&lt;<\/span><b><span style=\"color: #d35400\">DHT<\/span><\/b><span style=\"color: #434f54\">.<\/span><span style=\"color: #000000\">h<\/span><span style=\"color: #434f54\">&gt;<\/span>\n\n<span style=\"color: #434f54\">\/\/ WIFI: conexi\u00f3n a Router<\/span>\n<span style=\"color: #00979c\">char<\/span><span style=\"color: #434f54\">*<\/span> <span style=\"color: #000000\">ssid<\/span> <span style=\"color: #434f54\">=<\/span> <span style=\"color: #005c5f\">\"giotirni20\"<\/span><span style=\"color: #000000\">;<\/span>\n<span style=\"color: #00979c\">char<\/span><span style=\"color: #434f54\">*<\/span> <span style=\"color: #000000\">password<\/span> <span style=\"color: #434f54\">=<\/span> <span style=\"color: #005c5f\">\"Anera2020@\"<\/span><span style=\"color: #000000\">;<\/span>\n\n<span style=\"color: #434f54\">\/\/ MQTT: Servidor<\/span>\n<span style=\"color: #00979c\">char<\/span><span style=\"color: #434f54\">*<\/span> <span style=\"color: #000000\">MQTT_IP<\/span> <span style=\"color: #434f54\">=<\/span> <span style=\"color: #005c5f\">\"192.168.10.50\"<\/span><span style=\"color: #000000\">;<\/span>\n<span style=\"color: #00979c\">uint16_t<\/span> <span style=\"color: #000000\">MQTT_puerto<\/span> <span style=\"color: #434f54\">=<\/span> <span style=\"color: #000000\">1883<\/span><span style=\"color: #000000\">;<\/span>\n<span style=\"color: #00979c\">char<\/span><span style=\"color: #434f54\">*<\/span> <span style=\"color: #000000\">MQTT_usuario<\/span> <span style=\"color: #434f54\">=<\/span> <span style=\"color: #005c5f\">\"usuarioprueba\"<\/span><span style=\"color: #000000\">;<\/span>\n<span style=\"color: #00979c\">char<\/span><span style=\"color: #434f54\">*<\/span> <span style=\"color: #000000\">MQTT_contrasena<\/span> <span style=\"color: #434f54\">=<\/span> <span style=\"color: #005c5f\">\"usuarioclave\"<\/span><span style=\"color: #000000\">;<\/span>\n\n<span style=\"color: #434f54\">\/\/ MQTT: Dispositivo Interruptor<\/span>\n<span style=\"color: #00979c\">char<\/span><span style=\"color: #434f54\">*<\/span> <span style=\"color: #000000\">MQTT_ID<\/span> <span style=\"color: #434f54\">=<\/span> <span style=\"color: #005c5f\">\"oficina_CtrlIR01\"<\/span><span style=\"color: #000000\">;<\/span>\n<span style=\"color: #00979c\">char<\/span><span style=\"color: #434f54\">*<\/span> <span style=\"color: #000000\">MQTT_TOPIC<\/span> <span style=\"color: #434f54\">=<\/span> <span style=\"color: #005c5f\">\"oficina\/CtrlIR01\/estado\"<\/span><span style=\"color: #000000\">;<\/span>\n<span style=\"color: #00979c\">char<\/span><span style=\"color: #434f54\">*<\/span> <span style=\"color: #000000\">MQTT_COMMAND<\/span> <span style=\"color: #434f54\">=<\/span> <span style=\"color: #005c5f\">\"oficina\/CtrlIR01\/cambia\"<\/span><span style=\"color: #000000\">;<\/span>\n\n<span style=\"color: #00979c\">char<\/span><span style=\"color: #434f54\">*<\/span> <span style=\"color: #000000\">MQTT_TOPIC_T<\/span> <span style=\"color: #434f54\">=<\/span> <span style=\"color: #005c5f\">\"oficina\/CtrlIR01\/temperatura\"<\/span><span style=\"color: #000000\">;<\/span>\n<span style=\"color: #00979c\">char<\/span><span style=\"color: #434f54\">*<\/span> <span style=\"color: #000000\">MQTT_TOPIC_H<\/span> <span style=\"color: #434f54\">=<\/span> <span style=\"color: #005c5f\">\"oficina\/CtrlIR01\/humedad\"<\/span><span style=\"color: #000000\">;<\/span>\n<span style=\"color: #00979c\">char<\/span><span style=\"color: #434f54\">*<\/span> <span style=\"color: #000000\">MQTT_COMMAND_DHT<\/span> <span style=\"color: #434f54\">=<\/span> <span style=\"color: #005c5f\">\"oficina\/CtrlIR01\/actualiza\"<\/span><span style=\"color: #000000\">;<\/span>\n\n<span style=\"color: #00979c\">char<\/span><span style=\"color: #434f54\">*<\/span> <span style=\"color: #000000\">MQTT_TOPIC_LeeIR<\/span> <span style=\"color: #434f54\">=<\/span> <span style=\"color: #005c5f\">\"oficina\/CtrlIR01\/leer\"<\/span><span style=\"color: #000000\">;<\/span>\n<span style=\"color: #00979c\">char<\/span><span style=\"color: #434f54\">*<\/span> <span style=\"color: #000000\">MQTT_COMMAND_LeeIR<\/span> <span style=\"color: #434f54\">=<\/span> <span style=\"color: #005c5f\">\"oficina\/CtrlIR01\/grabar\"<\/span><span style=\"color: #000000\">;<\/span>\n\n<span style=\"color: #00979c\">char<\/span> <span style=\"color: #000000\">MQTT_SensorEstado<\/span><span style=\"color: #000000\">[<\/span><span style=\"color: #000000\">10<\/span><span style=\"color: #000000\">]<\/span> <span style=\"color: #434f54\">=<\/span> <span style=\"color: #005c5f\">\"OFF\"<\/span><span style=\"color: #000000\">;<\/span>\n<span style=\"color: #00979c\">char<\/span> <span style=\"color: #000000\">MQTT_ActuadorEstado<\/span><span style=\"color: #000000\">[<\/span><span style=\"color: #000000\">10<\/span><span style=\"color: #000000\">]<\/span> <span style=\"color: #434f54\">=<\/span> <span style=\"color: #005c5f\">\"OFF\"<\/span><span style=\"color: #000000\">;<\/span>\n<span style=\"color: #00979c\">char<\/span> <span style=\"color: #000000\">MQTT_DHT_T<\/span><span style=\"color: #000000\">[<\/span><span style=\"color: #000000\">6<\/span><span style=\"color: #000000\">]<\/span> <span style=\"color: #434f54\">=<\/span> <span style=\"color: #005c5f\">\"25\"<\/span><span style=\"color: #000000\">;<\/span> <span style=\"color: #434f54\">\/\/ inicializa<\/span>\n<span style=\"color: #00979c\">char<\/span> <span style=\"color: #000000\">MQTT_DHT_H<\/span><span style=\"color: #000000\">[<\/span><span style=\"color: #000000\">6<\/span><span style=\"color: #000000\">]<\/span> <span style=\"color: #434f54\">=<\/span> <span style=\"color: #005c5f\">\"50\"<\/span><span style=\"color: #000000\">;<\/span> <span style=\"color: #434f54\">\/\/ inicializa<\/span>\n<span style=\"color: #00979c\">char<\/span> <span style=\"color: #000000\">MQTT_LeeIR<\/span><span style=\"color: #000000\">[<\/span><span style=\"color: #000000\">6<\/span><span style=\"color: #000000\">]<\/span> <span style=\"color: #434f54\">=<\/span> <span style=\"color: #005c5f\">\"0\"<\/span><span style=\"color: #000000\">;<\/span> <span style=\"color: #434f54\">\/\/ inicializa<\/span>\n<span style=\"color: #00979c\">volatile<\/span> <span style=\"color: #00979c\">boolean<\/span> <span style=\"color: #000000\">mqtt_desconectado<\/span> <span style=\"color: #434f54\">=<\/span> <span style=\"color: #00979c\">true<\/span><span style=\"color: #000000\">;<\/span>\n\n<span style=\"color: #00979c\">char<\/span><span style=\"color: #434f54\">*<\/span> <span style=\"color: #000000\">sensor_ON<\/span> \u00a0<span style=\"color: #434f54\">=<\/span> <span style=\"color: #005c5f\">\"ON\"<\/span><span style=\"color: #000000\">;<\/span>\n<span style=\"color: #00979c\">char<\/span><span style=\"color: #434f54\">*<\/span> <span style=\"color: #000000\">sensor_OFF<\/span> <span style=\"color: #434f54\">=<\/span> <span style=\"color: #005c5f\">\"OFF\"<\/span><span style=\"color: #000000\">;<\/span>\n\n<span style=\"color: #434f54\">\/\/ Actuador Control Remoto Emisor LED-IR en GPIO14<\/span>\n<span style=\"color: #00979c\">const<\/span> <span style=\"color: #00979c\">uint8_t<\/span> <span style=\"color: #000000\">emisorIR_pin<\/span> <span style=\"color: #434f54\">=<\/span> <span style=\"color: #000000\">14<\/span><span style=\"color: #000000\">;<\/span>\n<span style=\"color: #00979c\">uint32_t<\/span> <span style=\"color: #000000\">senal_ONOFF<\/span> <span style=\"color: #434f54\">=<\/span> <span style=\"color: #000000\">0xFF5AA5<\/span><span style=\"color: #000000\">;<\/span> <span style=\"color: #434f54\">\/\/ c\u00f3digo de control<\/span>\n<span style=\"color: #00979c\">volatile<\/span> <span style=\"color: #00979c\">boolean<\/span> <span style=\"color: #000000\">actuador_estado<\/span> <span style=\"color: #434f54\">=<\/span> <span style=\"color: #00979c\">false<\/span><span style=\"color: #000000\">;<\/span>\n<span style=\"color: #00979c\">volatile<\/span> <span style=\"color: #00979c\">boolean<\/span> <span style=\"color: #000000\">actuador_bandera<\/span> <span style=\"color: #434f54\">=<\/span> <span style=\"color: #00979c\">false<\/span><span style=\"color: #000000\">;<\/span>\n\n<span style=\"color: #434f54\">\/\/ Sensor IR en GPIO05<\/span>\n<span style=\"color: #00979c\">const<\/span> <span style=\"color: #00979c\">uint8_t<\/span> <span style=\"color: #000000\">receptorIR_pin<\/span> <span style=\"color: #434f54\">=<\/span> <span style=\"color: #000000\">5<\/span><span style=\"color: #000000\">;<\/span>\n<span style=\"color: #00979c\">volatile<\/span> <span style=\"color: #00979c\">boolean<\/span> <span style=\"color: #000000\">LeerIR_estado<\/span> <span style=\"color: #434f54\">=<\/span> <span style=\"color: #00979c\">false<\/span><span style=\"color: #000000\">;<\/span>\n<span style=\"color: #00979c\">volatile<\/span> <span style=\"color: #00979c\">boolean<\/span> <span style=\"color: #000000\">LeerIR_bandera<\/span> <span style=\"color: #434f54\">=<\/span> <span style=\"color: #00979c\">false<\/span><span style=\"color: #000000\">;<\/span>\n\n<span style=\"color: #434f54\">\/\/ Boton de lectura y emitir IR<\/span>\n<span style=\"color: #00979c\">const<\/span> <span style=\"color: #00979c\">uint8_t<\/span> <span style=\"color: #000000\">config_pin<\/span> <span style=\"color: #434f54\">=<\/span> <span style=\"color: #000000\">12<\/span><span style=\"color: #000000\">;<\/span>\n<span style=\"color: #00979c\">const<\/span> <span style=\"color: #00979c\">uint8_t<\/span> <span style=\"color: #000000\">emitir_pin<\/span> <span style=\"color: #434f54\">=<\/span> <span style=\"color: #000000\">0<\/span><span style=\"color: #000000\">;<\/span>\n\n<span style=\"color: #434f54\">\/\/ LED monitor \/\/interno: ESP01-pin=1, ESP07-pin=2<\/span>\n<span style=\"color: #00979c\">const<\/span> <span style=\"color: #00979c\">uint8_t<\/span> <span style=\"color: #000000\">LED_pin<\/span><span style=\"color: #434f54\">=<\/span><span style=\"color: #000000\">13<\/span><span style=\"color: #000000\">;<\/span>\n<span style=\"color: #00979c\">const<\/span> <span style=\"color: #00979c\">uint8_t<\/span> <span style=\"color: #000000\">LED_LeerIR<\/span> <span style=\"color: #434f54\">=<\/span> <span style=\"color: #000000\">2<\/span><span style=\"color: #000000\">;<\/span>\n\n<span style=\"color: #434f54\">\/\/ Mensajes por Puerto Serial<\/span>\n<span style=\"color: #00979c\">volatile<\/span> <span style=\"color: #00979c\">boolean<\/span> <span style=\"color: #000000\">serial_msg<\/span> <span style=\"color: #434f54\">=<\/span> <span style=\"color: #00979c\">true<\/span><span style=\"color: #000000\">;<\/span>\n\n<span style=\"color: #434f54\">\/\/ Control de tiempo transcurrido entre lecturas temperatura<\/span>\n<span style=\"color: #00979c\">unsigned<\/span> <span style=\"color: #00979c\">long<\/span> <span style=\"color: #000000\">ahora<\/span> <span style=\"color: #434f54\">=<\/span> <span style=\"color: #d35400\">millis<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\n<span style=\"color: #00979c\">const<\/span> <span style=\"color: #00979c\">long<\/span> <span style=\"color: #000000\">intervalo<\/span> <span style=\"color: #434f54\">=<\/span> <span style=\"color: #000000\">5<\/span><span style=\"color: #434f54\">*<\/span><span style=\"color: #000000\">60<\/span><span style=\"color: #434f54\">*<\/span><span style=\"color: #000000\">1000<\/span><span style=\"color: #000000\">;<\/span><span style=\"color: #434f54\">\/\/minutos*60s*1000ms<\/span>\n<span style=\"color: #00979c\">unsigned<\/span> <span style=\"color: #00979c\">long<\/span> <span style=\"color: #000000\">antes<\/span> <span style=\"color: #434f54\">=<\/span> <span style=\"color: #000000\">ahora<\/span><span style=\"color: #434f54\">-<\/span><span style=\"color: #000000\">intervalo<\/span><span style=\"color: #434f54\">-<\/span><span style=\"color: #000000\">1<\/span><span style=\"color: #000000\">;<\/span> <span style=\"color: #434f54\">\/\/leer al inicio<\/span>\n\n<span style=\"color: #434f54\">\/\/ Clientes WiFi y MQTT<\/span>\n<span style=\"color: #d35400\">WiFiClient<\/span> <span style=\"color: #000000\">wifiClient<\/span><span style=\"color: #000000\">;<\/span>\n<b><span style=\"color: #d35400\">PubSubClient<\/span><\/b> <span style=\"color: #000000\">mqttclient<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">wifiClient<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\n\n<span style=\"color: #434f54\">\/\/ Receptor y Emisor Infrarojos<\/span>\n<b><span style=\"color: #d35400\">IRrecv<\/span><\/b> <span style=\"color: #000000\">irrecv<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">receptorIR_pin<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\n<b><span style=\"color: #d35400\">decode_results<\/span><\/b> <span style=\"color: #000000\">lecturaIR<\/span><span style=\"color: #000000\">;<\/span>\n<b><span style=\"color: #d35400\">IRsend<\/span><\/b> <span style=\"color: #000000\">irsend<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">emisorIR_pin<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\n\n<span style=\"color: #434f54\">\/\/ Sensor de Temperatura&amp;Humedad<\/span>\n<span style=\"color: #5e6d03\">#define<\/span> <span style=\"color: #000000\">DHTPIN<\/span> <span style=\"color: #000000\">4<\/span>\n<span style=\"color: #5e6d03\">#define<\/span> <span style=\"color: #000000\">DHTTYPE<\/span> \u00a0\u00a0<span style=\"color: #000000\">DHT11<\/span>\n<b><span style=\"color: #d35400\">DHT<\/span><\/b> <span style=\"color: #000000\">dht<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">DHTPIN<\/span><span style=\"color: #434f54\">,<\/span> <span style=\"color: #000000\">DHTTYPE<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\n\n<span style=\"color: #00979c\">void<\/span> <span style=\"color: #5e6d03\">setup<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">)<\/span> <span style=\"color: #000000\">{<\/span>\n \u00a0<b><span style=\"color: #d35400\">Serial<\/span><\/b><span style=\"color: #434f54\">.<\/span><span style=\"color: #d35400\">begin<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">74880<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span><span style=\"color: #434f54\">\/\/74880, 115200<\/span>\n \u00a0<span style=\"color: #5e6d03\">while<\/span> <span style=\"color: #000000\">(<\/span><span style=\"color: #434f54\">!<\/span><b><span style=\"color: #d35400\">Serial<\/span><\/b><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">{<\/span><span style=\"color: #d35400\">delay<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">50<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span><span style=\"color: #000000\">}<\/span>\n \u00a0\n \u00a0<span style=\"color: #434f54\">\/\/ SENSOR IR \/\/ inicia receptor IR<\/span>\n \u00a0<span style=\"color: #000000\">irrecv<\/span><span style=\"color: #434f54\">.<\/span><span style=\"color: #d35400\">enableIRIn<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span> \n \u00a0<span style=\"color: #d35400\">pinMode<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">LED_LeerIR<\/span><span style=\"color: #434f54\">,<\/span> <span style=\"color: #00979c\">OUTPUT<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\n \u00a0<span style=\"color: #000000\">Leer_Activaestado<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\n \u00a0\u00a0\u00a0\n \u00a0<span style=\"color: #434f54\">\/\/ ACTUADOR IR \/\/ inicia emisor IR<\/span>\n \u00a0<span style=\"color: #d35400\">pinMode<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">emisorIR_pin<\/span><span style=\"color: #434f54\">,<\/span> <span style=\"color: #00979c\">OUTPUT<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span> \n \u00a0<span style=\"color: #000000\">irsend<\/span><span style=\"color: #434f54\">.<\/span><span style=\"color: #d35400\">begin<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\n\n \u00a0<span style=\"color: #434f54\">\/\/ SENSOR Temperatura&amp;Humedad<\/span>\n \u00a0<span style=\"color: #000000\">dht<\/span><span style=\"color: #434f54\">.<\/span><span style=\"color: #d35400\">begin<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\n \u00a0\n \u00a0<span style=\"color: #434f54\">\/\/ LED monitor, Enciende en LOW<\/span>\n \u00a0<span style=\"color: #d35400\">pinMode<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">LED_pin<\/span><span style=\"color: #434f54\">,<\/span> <span style=\"color: #00979c\">OUTPUT<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\n\n \u00a0<span style=\"color: #434f54\">\/\/ Memoria lectura y escritura<\/span>\n \u00a0<b><span style=\"color: #d35400\">EEPROM<\/span><\/b><span style=\"color: #434f54\">.<\/span><span style=\"color: #d35400\">begin<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">64<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span> <span style=\"color: #434f54\">\/\/eeprom maximo 512 posiciones<\/span>\n \u00a0<span style=\"color: #000000\">codigo_leermem<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\n\n \u00a0<span style=\"color: #434f54\">\/\/ Boton de lectura de c\u00f3digo IR<\/span>\n \u00a0<span style=\"color: #d35400\">pinMode<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">config_pin<\/span><span style=\"color: #434f54\">,<\/span> <span style=\"color: #00979c\">INPUT<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\n \u00a0<span style=\"color: #d35400\">attachInterrupt<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #d35400\">digitalPinToInterrupt<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">config_pin<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #434f54\">,<\/span><span style=\"color: #000000\">LeerActivado<\/span><span style=\"color: #434f54\">,<\/span><span style=\"color: #00979c\">CHANGE<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\n\n \u00a0<span style=\"color: #434f54\">\/\/ Boton de Emisor de c\u00f3digo IR<\/span>\n \u00a0<span style=\"color: #d35400\">pinMode<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">emitir_pin<\/span><span style=\"color: #434f54\">,<\/span> <span style=\"color: #00979c\">INPUT<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\n \u00a0<span style=\"color: #d35400\">attachInterrupt<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #d35400\">digitalPinToInterrupt<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">emitir_pin<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #434f54\">,<\/span><span style=\"color: #000000\">IR_Activado<\/span><span style=\"color: #434f54\">,<\/span><span style=\"color: #00979c\">CHANGE<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\n \u00a0\n \u00a0<span style=\"color: #434f54\">\/\/ conexi\u00f3n WIFI y MQTT<\/span>\n \u00a0<span style=\"color: #000000\">inicia_wifi<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\n \u00a0<span style=\"color: #5e6d03\">if<\/span> <span style=\"color: #000000\">(<\/span><b><span style=\"color: #d35400\">WiFi<\/span><\/b><span style=\"color: #434f54\">.<\/span><span style=\"color: #d35400\">status<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">)<\/span> <span style=\"color: #434f54\">==<\/span> <span style=\"color: #000000\">WL_CONNECTED<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">{<\/span>\n \u00a0\u00a0\u00a0<span style=\"color: #000000\">inicia_mqtt<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\n \u00a0\u00a0\u00a0<span style=\"color: #000000\">}<\/span>\n \u00a0<span style=\"color: #000000\">}<\/span>\n\n<span style=\"color: #00979c\">void<\/span> <span style=\"color: #5e6d03\">loop<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">)<\/span> <span style=\"color: #000000\">{<\/span>\n \u00a0<span style=\"color: #434f54\">\/\/ enviar se\u00f1al IR<\/span>\n \u00a0<span style=\"color: #5e6d03\">if<\/span> <span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">actuador_bandera<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">{<\/span>\n \u00a0\u00a0\u00a0<span style=\"color: #000000\">irsend<\/span><span style=\"color: #434f54\">.<\/span><span style=\"color: #d35400\">sendNEC<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">senal_ONOFF<\/span> <span style=\"color: #434f54\">,<\/span><span style=\"color: #000000\">32<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\n \u00a0\u00a0\u00a0<span style=\"color: #434f54\">\/\/ parpadeo<\/span>\n \u00a0\u00a0\u00a0<span style=\"color: #d35400\">digitalWrite<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">LED_LeerIR<\/span><span style=\"color: #434f54\">,<\/span> <span style=\"color: #00979c\">LOW<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\n \u00a0\u00a0\u00a0<span style=\"color: #d35400\">delay<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">300<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\n \u00a0\u00a0\u00a0<span style=\"color: #d35400\">digitalWrite<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">LED_LeerIR<\/span><span style=\"color: #434f54\">,<\/span> <span style=\"color: #00979c\">HIGH<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\n \u00a0\u00a0\u00a0<span style=\"color: #d35400\">delay<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">200<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\n \u00a0\u00a0\u00a0<span style=\"color: #d35400\">digitalWrite<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">LED_LeerIR<\/span><span style=\"color: #434f54\">,<\/span> <span style=\"color: #00979c\">LOW<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\n \u00a0\u00a0\u00a0<span style=\"color: #d35400\">delay<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">300<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\n \u00a0\u00a0\u00a0<span style=\"color: #d35400\">digitalWrite<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">LED_LeerIR<\/span><span style=\"color: #434f54\">,<\/span> <span style=\"color: #00979c\">HIGH<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\n \u00a0\u00a0\u00a0<span style=\"color: #d35400\">delay<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">200<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\n \u00a0\u00a0\u00a0<span style=\"color: #434f54\">\/\/ deja en estado anterior el LED Leer_IR<\/span>\n \u00a0\u00a0\u00a0<span style=\"color: #000000\">Leer_Activaestado<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\n \u00a0\u00a0\u00a0<span style=\"color: #000000\">publica_estado<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\n \u00a0\u00a0\u00a0<span style=\"color: #000000\">actuador_bandera<\/span> <span style=\"color: #434f54\">=<\/span> <span style=\"color: #00979c\">false<\/span><span style=\"color: #000000\">;<\/span>\n \u00a0\u00a0\u00a0\n \u00a0\u00a0\u00a0<span style=\"color: #5e6d03\">if<\/span> <span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">serial_msg<\/span><span style=\"color: #434f54\">==<\/span><span style=\"color: #00979c\">true<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">{<\/span>\n \u00a0\u00a0\u00a0\u00a0\u00a0<b><span style=\"color: #d35400\">Serial<\/span><\/b><span style=\"color: #434f54\">.<\/span><span style=\"color: #d35400\">print<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #005c5f\">\"\\n Se\u00f1al IR enviada: \"<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\n \u00a0\u00a0\u00a0\u00a0\u00a0<span style=\"color: #d35400\">serialPrintUint64<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">senal_ONOFF<\/span><span style=\"color: #434f54\">,<\/span> <span style=\"color: #00979c\">HEX<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\n \u00a0\u00a0\u00a0\u00a0\u00a0<b><span style=\"color: #d35400\">Serial<\/span><\/b><span style=\"color: #434f54\">.<\/span><span style=\"color: #d35400\">println<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #005c5f\">\"\"<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\n \u00a0\u00a0\u00a0\u00a0\u00a0<span style=\"color: #000000\">}<\/span>\n\n \u00a0\u00a0\u00a0<span style=\"color: #000000\">}<\/span>\n \u00a0<span style=\"color: #d35400\">yield<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span> <span style=\"color: #434f54\">\/\/ procesa wifi<\/span>\n\n \u00a0<span style=\"color: #434f54\">\/\/ Sensor IR, leer c\u00f3digo<\/span>\n \u00a0<span style=\"color: #5e6d03\">if<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">LeerIR_bandera<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">{<\/span>\n \u00a0\u00a0\u00a0<span style=\"color: #5e6d03\">if<\/span> <span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">irrecv<\/span><span style=\"color: #434f54\">.<\/span><span style=\"color: #d35400\">decode<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #434f54\">&amp;<\/span><span style=\"color: #000000\">lecturaIR<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">)<\/span> <span style=\"color: #000000\">{<\/span>\n \u00a0\u00a0\u00a0\u00a0\u00a0<span style=\"color: #434f54\">\/\/ conversi\u00f3n a texto<\/span>\n \u00a0\u00a0\u00a0\u00a0\u00a0<span style=\"color: #00979c\">uint64_t<\/span> <span style=\"color: #000000\">numero<\/span> <span style=\"color: #434f54\">=<\/span> <span style=\"color: #000000\">lecturaIR<\/span><span style=\"color: #434f54\">.<\/span><span style=\"color: #000000\">value<\/span><span style=\"color: #000000\">;<\/span>\n \u00a0\u00a0\u00a0\u00a0\u00a0<span style=\"color: #00979c\">unsigned<\/span> <span style=\"color: #00979c\">long<\/span> <span style=\"color: #000000\">parte1<\/span> <span style=\"color: #434f54\">=<\/span> <span style=\"color: #000000\">(<\/span><span style=\"color: #00979c\">unsigned<\/span> <span style=\"color: #00979c\">long<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">numero<\/span> <span style=\"color: #434f54\">&amp;<\/span> <span style=\"color: #000000\">0xFFFF0000<\/span><span style=\"color: #000000\">)<\/span> <span style=\"color: #434f54\">&gt;&gt;<\/span> <span style=\"color: #000000\">16<\/span> <span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\n \u00a0\u00a0\u00a0\u00a0\u00a0<span style=\"color: #00979c\">unsigned<\/span> <span style=\"color: #00979c\">long<\/span> <span style=\"color: #000000\">parte2<\/span> <span style=\"color: #434f54\">=<\/span> <span style=\"color: #000000\">(<\/span><span style=\"color: #00979c\">unsigned<\/span> <span style=\"color: #00979c\">long<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">numero<\/span> <span style=\"color: #434f54\">&amp;<\/span> <span style=\"color: #000000\">0x0000FFFF<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\n \u00a0\u00a0\u00a0\u00a0\u00a0<span style=\"color: #00979c\">String<\/span> <span style=\"color: #000000\">texto<\/span> <span style=\"color: #434f54\">=<\/span> <span style=\"color: #00979c\">String<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">parte1<\/span><span style=\"color: #434f54\">,<\/span> <span style=\"color: #00979c\">HEX<\/span><span style=\"color: #000000\">)<\/span> <span style=\"color: #434f54\">+<\/span> <span style=\"color: #00979c\">String<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">parte2<\/span><span style=\"color: #434f54\">,<\/span> <span style=\"color: #00979c\">HEX<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\n \u00a0\u00a0\u00a0\u00a0\u00a0<span style=\"color: #000000\">texto<\/span><span style=\"color: #434f54\">.<\/span><span style=\"color: #d35400\">toUpperCase<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\n \u00a0\u00a0\u00a0\u00a0\u00a0<span style=\"color: #000000\">senal_ONOFF<\/span> <span style=\"color: #434f54\">=<\/span> <span style=\"color: #000000\">lecturaIR<\/span><span style=\"color: #434f54\">.<\/span><span style=\"color: #000000\">value<\/span><span style=\"color: #000000\">;<\/span>\n \u00a0\u00a0\u00a0\u00a0\u00a0\n \u00a0\u00a0\u00a0\u00a0\u00a0<span style=\"color: #434f54\">\/\/ Escribe a memoria EEPROM \u00a0\u00a0\u00a0<\/span>\n \u00a0\u00a0\u00a0\u00a0\u00a0<span style=\"color: #434f54\">\/\/ escribe a eeprom<\/span>\n \u00a0\u00a0\u00a0\u00a0\u00a0<span style=\"color: #000000\">texto<\/span> <span style=\"color: #434f54\">=<\/span> <span style=\"color: #000000\">texto<\/span><span style=\"color: #434f54\">+<\/span><span style=\"color: #005c5f\">\";\"<\/span><span style=\"color: #000000\">;<\/span> <span style=\"color: #434f54\">\/\/marca fin de texto<\/span>\n \u00a0\u00a0\u00a0\u00a0\u00a0<span style=\"color: #00979c\">int<\/span> <span style=\"color: #000000\">n<\/span> <span style=\"color: #434f54\">=<\/span> <span style=\"color: #000000\">texto<\/span><span style=\"color: #434f54\">.<\/span><span style=\"color: #d35400\">length<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\n \u00a0\u00a0\u00a0\u00a0\u00a0<span style=\"color: #00979c\">int<\/span> <span style=\"color: #000000\">posicion<\/span> <span style=\"color: #434f54\">=<\/span> <span style=\"color: #000000\">0<\/span><span style=\"color: #000000\">;<\/span>\n \u00a0\u00a0\u00a0\u00a0\u00a0<span style=\"color: #00979c\">int<\/span> <span style=\"color: #000000\">i<\/span> <span style=\"color: #434f54\">=<\/span> <span style=\"color: #000000\">posicion<\/span><span style=\"color: #000000\">;<\/span>\n \u00a0\u00a0\u00a0\u00a0\u00a0<span style=\"color: #5e6d03\">while<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">i<\/span><span style=\"color: #434f54\">&lt;<\/span><span style=\"color: #000000\">n<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">{<\/span>\n \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<b><span style=\"color: #d35400\">EEPROM<\/span><\/b><span style=\"color: #434f54\">.<\/span><span style=\"color: #d35400\">write<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">i<\/span><span style=\"color: #434f54\">,<\/span><span style=\"color: #000000\">texto<\/span><span style=\"color: #000000\">[<\/span><span style=\"color: #000000\">i<\/span><span style=\"color: #000000\">]<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\n \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span style=\"color: #000000\">i<\/span><span style=\"color: #434f54\">=<\/span><span style=\"color: #000000\">i<\/span><span style=\"color: #434f54\">+<\/span><span style=\"color: #000000\">1<\/span><span style=\"color: #000000\">;<\/span>\n \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span style=\"color: #000000\">}<\/span>\n \u00a0\u00a0\u00a0\u00a0\u00a0<b><span style=\"color: #d35400\">EEPROM<\/span><\/b><span style=\"color: #434f54\">.<\/span><span style=\"color: #000000\">commit<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\n \u00a0\u00a0\u00a0\u00a0\u00a0<span style=\"color: #000000\">irrecv<\/span><span style=\"color: #434f54\">.<\/span><span style=\"color: #d35400\">resume<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\n \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\n \u00a0\u00a0\u00a0\u00a0\u00a0<span style=\"color: #000000\">LeerIR_bandera<\/span> <span style=\"color: #434f54\">=<\/span> <span style=\"color: #00979c\">false<\/span><span style=\"color: #000000\">;<\/span>\n \u00a0\u00a0\u00a0\u00a0\u00a0<span style=\"color: #000000\">LeerIR_estado<\/span> <span style=\"color: #434f54\">=<\/span> <span style=\"color: #00979c\">false<\/span><span style=\"color: #000000\">;<\/span>\n\n \u00a0\u00a0\u00a0\u00a0\u00a0<span style=\"color: #000000\">publica_estado<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\n \u00a0\u00a0\u00a0\u00a0\u00a0<span style=\"color: #000000\">Leer_Activaestado<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\n \u00a0\u00a0\u00a0\u00a0\u00a0\n \u00a0\u00a0\u00a0\u00a0\u00a0<span style=\"color: #5e6d03\">if<\/span> <span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">serial_msg<\/span><span style=\"color: #434f54\">==<\/span><span style=\"color: #00979c\">true<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">{<\/span>\n \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<b><span style=\"color: #d35400\">Serial<\/span><\/b><span style=\"color: #434f54\">.<\/span><span style=\"color: #d35400\">print<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #005c5f\">\"\\n lecturaIR: \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\n \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span style=\"color: #434f54\">\/\/ print() &amp; println() no maneja enteros largos(uint64_t)<\/span>\n \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span style=\"color: #d35400\">serialPrintUint64<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">lecturaIR<\/span><span style=\"color: #434f54\">.<\/span><span style=\"color: #000000\">value<\/span><span style=\"color: #434f54\">,<\/span> <span style=\"color: #00979c\">HEX<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\n \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<b><span style=\"color: #d35400\">Serial<\/span><\/b><span style=\"color: #434f54\">.<\/span><span style=\"color: #d35400\">println<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #005c5f\">\"\"<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\n \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<b><span style=\"color: #d35400\">Serial<\/span><\/b><span style=\"color: #434f54\">.<\/span><span style=\"color: #d35400\">print<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #005c5f\">\" grabado en memoria: \u00a0\u00a0\"<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\n \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<b><span style=\"color: #d35400\">Serial<\/span><\/b><span style=\"color: #434f54\">.<\/span><span style=\"color: #d35400\">println<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">texto<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\n \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span style=\"color: #000000\">}<\/span>\n \u00a0\u00a0\u00a0<span style=\"color: #000000\">}<\/span>\n \u00a0<span style=\"color: #000000\">}<\/span>\n\n \u00a0<span style=\"color: #d35400\">yield<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span> <span style=\"color: #434f54\">\/\/ procesa wifi<\/span>\n \u00a0\n \u00a0<span style=\"color: #434f54\">\/\/ lectura Temperatura,Humedad<\/span>\n \u00a0<span style=\"color: #00979c\">unsigned<\/span> <span style=\"color: #00979c\">long<\/span> <span style=\"color: #000000\">ahora<\/span> <span style=\"color: #434f54\">=<\/span> <span style=\"color: #d35400\">millis<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\n \u00a0<span style=\"color: #00979c\">unsigned<\/span> <span style=\"color: #00979c\">long<\/span> <span style=\"color: #000000\">transcurre<\/span> <span style=\"color: #434f54\">=<\/span> <span style=\"color: #000000\">ahora<\/span><span style=\"color: #434f54\">-<\/span><span style=\"color: #000000\">antes<\/span><span style=\"color: #000000\">;<\/span>\n \u00a0<span style=\"color: #5e6d03\">if<\/span> <span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">transcurre<\/span><span style=\"color: #434f54\">&gt;=<\/span><span style=\"color: #000000\">intervalo<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">{<\/span>\n \u00a0\u00a0\u00a0<span style=\"color: #000000\">antes<\/span> <span style=\"color: #434f54\">=<\/span> <span style=\"color: #000000\">ahora<\/span><span style=\"color: #000000\">;<\/span>\n \u00a0\u00a0\u00a0<span style=\"color: #d35400\">delay<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">50<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\n \u00a0\u00a0\u00a0<span style=\"color: #434f54\">\/\/ calibrar con una referencia m\u00e1s precisa<\/span>\n \u00a0\u00a0\u00a0<span style=\"color: #434f54\">\/\/ modo simple: resta factor de correcci\u00f3n=5<\/span>\n \u00a0\u00a0\u00a0<span style=\"color: #00979c\">float<\/span> <span style=\"color: #000000\">temperatura<\/span> <span style=\"color: #434f54\">=<\/span> <span style=\"color: #000000\">dht<\/span><span style=\"color: #434f54\">.<\/span><span style=\"color: #d35400\">readTemperature<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\n \u00a0\u00a0\u00a0<span style=\"color: #00979c\">float<\/span> <span style=\"color: #000000\">humedad<\/span> <span style=\"color: #434f54\">=<\/span> <span style=\"color: #000000\">dht<\/span><span style=\"color: #434f54\">.<\/span><span style=\"color: #d35400\">readHumidity<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\n \u00a0\u00a0\u00a0<span style=\"color: #434f54\">\/\/ convierte a texto mqtt; a 4 d\u00edgitos, 2 decimales<\/span>\n \u00a0\u00a0\u00a0<span style=\"color: #000000\">dtostrf<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">temperatura<\/span><span style=\"color: #434f54\">,<\/span> <span style=\"color: #000000\">4<\/span><span style=\"color: #434f54\">,<\/span> <span style=\"color: #000000\">2<\/span><span style=\"color: #434f54\">,<\/span> <span style=\"color: #000000\">MQTT_DHT_T<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span> \u00a0\n \u00a0\u00a0\u00a0<span style=\"color: #000000\">dtostrf<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">humedad<\/span><span style=\"color: #434f54\">,<\/span> <span style=\"color: #000000\">4<\/span><span style=\"color: #434f54\">,<\/span> <span style=\"color: #000000\">2<\/span><span style=\"color: #434f54\">,<\/span> <span style=\"color: #000000\">MQTT_DHT_H<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\n \u00a0\u00a0\u00a0<span style=\"color: #000000\">publica_estado<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\n \u00a0\u00a0\u00a0\n \u00a0\u00a0\u00a0<span style=\"color: #5e6d03\">if<\/span> <span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">serial_msg<\/span><span style=\"color: #434f54\">==<\/span><span style=\"color: #00979c\">true<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">{<\/span>\n \u00a0\u00a0\u00a0\u00a0\u00a0<b><span style=\"color: #d35400\">Serial<\/span><\/b><span style=\"color: #434f54\">.<\/span><span style=\"color: #d35400\">print<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #005c5f\">\"\\n tiempo: \"<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\n \u00a0\u00a0\u00a0\u00a0\u00a0<b><span style=\"color: #d35400\">Serial<\/span><\/b><span style=\"color: #434f54\">.<\/span><span style=\"color: #d35400\">println<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">transcurre<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\n \u00a0\u00a0\u00a0\u00a0\u00a0<b><span style=\"color: #d35400\">Serial<\/span><\/b><span style=\"color: #434f54\">.<\/span><span style=\"color: #d35400\">print<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #005c5f\">\" Temperatura,Humedad: \"<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\n \u00a0\u00a0\u00a0\u00a0\u00a0<b><span style=\"color: #d35400\">Serial<\/span><\/b><span style=\"color: #434f54\">.<\/span><span style=\"color: #d35400\">print<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">MQTT_DHT_T<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\n \u00a0\u00a0\u00a0\u00a0\u00a0<b><span style=\"color: #d35400\">Serial<\/span><\/b><span style=\"color: #434f54\">.<\/span><span style=\"color: #d35400\">print<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #005c5f\">\" , \"<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\n \u00a0\u00a0\u00a0\u00a0\u00a0<b><span style=\"color: #d35400\">Serial<\/span><\/b><span style=\"color: #434f54\">.<\/span><span style=\"color: #d35400\">println<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">MQTT_DHT_H<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\n \u00a0\u00a0\u00a0\u00a0\u00a0<b><span style=\"color: #d35400\">Serial<\/span><\/b><span style=\"color: #434f54\">.<\/span><span style=\"color: #d35400\">println<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\n \u00a0\u00a0\u00a0\u00a0\u00a0<span style=\"color: #000000\">}<\/span>\n \u00a0\u00a0\u00a0<span style=\"color: #000000\">}<\/span>\n \u00a0\u00a0\u00a0\n \u00a0<span style=\"color: #d35400\">yield<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span> <span style=\"color: #434f54\">\/\/ procesa wifi<\/span>\n \u00a0\n \u00a0<span style=\"color: #5e6d03\">if<\/span> <span style=\"color: #000000\">(<\/span><b><span style=\"color: #d35400\">WiFi<\/span><\/b><span style=\"color: #434f54\">.<\/span><span style=\"color: #d35400\">status<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">)<\/span> <span style=\"color: #434f54\">!=<\/span> <span style=\"color: #000000\">WL_CONNECTED<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">{<\/span>\n \u00a0\u00a0\u00a0<span style=\"color: #000000\">inicia_wifi<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\n \u00a0\u00a0\u00a0<span style=\"color: #000000\">}<\/span><span style=\"color: #5e6d03\">else<\/span><span style=\"color: #000000\">{<\/span>\n \u00a0\u00a0\u00a0<span style=\"color: #5e6d03\">if<\/span> <span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">mqttclient<\/span><span style=\"color: #434f54\">.<\/span><span style=\"color: #d35400\">connected<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #434f54\">==<\/span><span style=\"color: #00979c\">false<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">{<\/span>\n \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span style=\"color: #000000\">mqtt_desconectado<\/span> <span style=\"color: #434f54\">=<\/span> <span style=\"color: #00979c\">true<\/span><span style=\"color: #000000\">;<\/span>\n \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span style=\"color: #000000\">inicia_mqtt<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span> <span style=\"color: #434f54\">\/\/ reintento<\/span>\n \u00a0\u00a0\u00a0\u00a0\u00a0<span style=\"color: #000000\">}<\/span>\n \u00a0\u00a0\u00a0<span style=\"color: #5e6d03\">if<\/span> <span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">mqttclient<\/span><span style=\"color: #434f54\">.<\/span><span style=\"color: #d35400\">connected<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #434f54\">==<\/span><span style=\"color: #00979c\">true<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">{<\/span>\n \u00a0\u00a0\u00a0\u00a0\u00a0<span style=\"color: #5e6d03\">if<\/span> <span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">mqtt_desconectado<\/span><span style=\"color: #434f54\">==<\/span><span style=\"color: #00979c\">true<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">{<\/span>\n \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span style=\"color: #000000\">publica_estado<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\n \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span style=\"color: #000000\">mqtt_desconectado<\/span><span style=\"color: #434f54\">=<\/span><span style=\"color: #00979c\">false<\/span><span style=\"color: #000000\">;<\/span>\n \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span style=\"color: #000000\">}<\/span>\n \u00a0\u00a0\u00a0\u00a0\u00a0<span style=\"color: #000000\">mqttclient<\/span><span style=\"color: #434f54\">.<\/span><span style=\"color: #5e6d03\">loop<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\n \u00a0\u00a0\u00a0\u00a0\u00a0<span style=\"color: #000000\">}<\/span>\n \u00a0\u00a0\u00a0<span style=\"color: #000000\">}<\/span>\n \u00a0<span style=\"color: #d35400\">yield<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span> <span style=\"color: #434f54\">\/\/ procesa wifi<\/span>\n<span style=\"color: #000000\">}<\/span>\n\n<span style=\"color: #00979c\">void<\/span> <span style=\"color: #000000\">codigo_leermem<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">{<\/span>\n \u00a0<span style=\"color: #434f54\">\/\/ lectura desde eeprom, codigo on\/off<\/span>\n \u00a0<span style=\"color: #00979c\">int<\/span> <span style=\"color: #000000\">posicion<\/span> <span style=\"color: #434f54\">=<\/span> <span style=\"color: #000000\">0<\/span><span style=\"color: #000000\">;<\/span>\n \u00a0<span style=\"color: #00979c\">int<\/span> <span style=\"color: #000000\">n<\/span> <span style=\"color: #434f54\">=<\/span> <span style=\"color: #000000\">posicion<\/span><span style=\"color: #434f54\">+<\/span><span style=\"color: #000000\">10<\/span><span style=\"color: #000000\">;<\/span>\n \u00a0<span style=\"color: #00979c\">String<\/span> <span style=\"color: #000000\">codigotxt<\/span> <span style=\"color: #434f54\">=<\/span> <span style=\"color: #005c5f\">\"\"<\/span><span style=\"color: #000000\">;<\/span>\n \u00a0<span style=\"color: #00979c\">char<\/span> <span style=\"color: #000000\">simbolo<\/span><span style=\"color: #000000\">;<\/span>\n \u00a0<span style=\"color: #00979c\">int<\/span> <span style=\"color: #000000\">i<\/span> <span style=\"color: #434f54\">=<\/span> <span style=\"color: #000000\">posicion<\/span><span style=\"color: #000000\">;<\/span>\n \u00a0<span style=\"color: #5e6d03\">while<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">i<\/span><span style=\"color: #434f54\">&lt;<\/span><span style=\"color: #000000\">n<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">{<\/span>\n \u00a0\u00a0\u00a0<span style=\"color: #000000\">simbolo<\/span> <span style=\"color: #434f54\">=<\/span> <span style=\"color: #00979c\">char<\/span><span style=\"color: #000000\">(<\/span><b><span style=\"color: #d35400\">EEPROM<\/span><\/b><span style=\"color: #434f54\">.<\/span><span style=\"color: #d35400\">read<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">i<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\n \u00a0\u00a0\u00a0<span style=\"color: #5e6d03\">if<\/span> <span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">simbolo<\/span><span style=\"color: #434f54\">!=<\/span><span style=\"color: #00979c\">';'<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">{<\/span>\n \u00a0\u00a0\u00a0\u00a0\u00a0<span style=\"color: #000000\">codigotxt<\/span> <span style=\"color: #434f54\">=<\/span> <span style=\"color: #000000\">codigotxt<\/span><span style=\"color: #434f54\">+<\/span><span style=\"color: #00979c\">String<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">simbolo<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\n \u00a0\u00a0\u00a0\u00a0\u00a0<span style=\"color: #000000\">}<\/span><span style=\"color: #5e6d03\">else<\/span><span style=\"color: #000000\">{<\/span>\n \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span style=\"color: #000000\">i<\/span><span style=\"color: #434f54\">=<\/span><span style=\"color: #000000\">n<\/span><span style=\"color: #000000\">;<\/span> <span style=\"color: #434f54\">\/\/ terminar lectura antes<\/span>\n \u00a0\u00a0\u00a0\u00a0\u00a0<span style=\"color: #000000\">}<\/span>\n \u00a0\u00a0\u00a0<span style=\"color: #000000\">i<\/span><span style=\"color: #434f54\">=<\/span><span style=\"color: #000000\">i<\/span><span style=\"color: #434f54\">+<\/span><span style=\"color: #000000\">1<\/span><span style=\"color: #000000\">;<\/span>\n \u00a0\u00a0\u00a0<span style=\"color: #000000\">}<\/span>\n \u00a0<span style=\"color: #434f54\">\/\/ conversi\u00f3n de codigotxt a HEX<\/span>\n \u00a0<span style=\"color: #00979c\">char<\/span> <span style=\"color: #000000\">codigochar<\/span><span style=\"color: #000000\">[<\/span><span style=\"color: #000000\">64<\/span><span style=\"color: #000000\">]<\/span><span style=\"color: #000000\">;<\/span>\n \u00a0<span style=\"color: #000000\">codigotxt<\/span><span style=\"color: #434f54\">.<\/span><span style=\"color: #d35400\">toCharArray<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">codigochar<\/span><span style=\"color: #434f54\">,<\/span> <span style=\"color: #000000\">n<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\n \u00a0<span style=\"color: #00979c\">uint32_t<\/span> <span style=\"color: #000000\">codigoIRhex<\/span> <span style=\"color: #434f54\">=<\/span> <span style=\"color: #d35400\">strtoul<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">codigochar<\/span><span style=\"color: #434f54\">,<\/span> <span style=\"color: #000000\">0<\/span><span style=\"color: #434f54\">,<\/span> <span style=\"color: #000000\">16<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\n \u00a0<span style=\"color: #434f54\">\/\/ actualiza variable<\/span>\n \u00a0<span style=\"color: #000000\">senal_ONOFF<\/span> <span style=\"color: #434f54\">=<\/span> <span style=\"color: #000000\">codigoIRhex<\/span><span style=\"color: #000000\">;<\/span>\n \u00a0<span style=\"color: #5e6d03\">if<\/span> <span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">serial_msg<\/span><span style=\"color: #434f54\">==<\/span><span style=\"color: #00979c\">true<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">{<\/span>\n \u00a0\u00a0\u00a0<b><span style=\"color: #d35400\">Serial<\/span><\/b><span style=\"color: #434f54\">.<\/span><span style=\"color: #d35400\">print<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #005c5f\">\"texto leido: \u00a0\u00a0\u00a0\u00a0\"<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\n \u00a0\u00a0\u00a0<b><span style=\"color: #d35400\">Serial<\/span><\/b><span style=\"color: #434f54\">.<\/span><span style=\"color: #d35400\">println<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">codigotxt<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\n \u00a0\u00a0\u00a0<b><span style=\"color: #d35400\">Serial<\/span><\/b><span style=\"color: #434f54\">.<\/span><span style=\"color: #d35400\">print<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #005c5f\">\"codigo IR eprom: \"<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\n \u00a0\u00a0\u00a0<span style=\"color: #434f54\">\/\/ print() &amp; println() no maneja enteros largos(uint64_t)<\/span>\n \u00a0\u00a0\u00a0<span style=\"color: #d35400\">serialPrintUint64<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">senal_ONOFF<\/span><span style=\"color: #434f54\">,<\/span> <span style=\"color: #00979c\">HEX<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\n \u00a0\u00a0\u00a0<b><span style=\"color: #d35400\">Serial<\/span><\/b><span style=\"color: #434f54\">.<\/span><span style=\"color: #d35400\">println<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #005c5f\">\"\\n\"<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\n \u00a0\u00a0\u00a0<span style=\"color: #000000\">}<\/span>\n \u00a0<span style=\"color: #000000\">}<\/span>\n\n<span style=\"color: #434f54\">\/\/ ISR interrupci\u00f3n activada<\/span>\n<span style=\"color: #00979c\">ICACHE_RAM_ATTR<\/span> <span style=\"color: #00979c\">void<\/span> <span style=\"color: #000000\">LeerActivado<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">{<\/span>\n \u00a0<span style=\"color: #434f54\">\/\/ evita repeticiones por rebotes del botonera<\/span>\n \u00a0<span style=\"color: #5e6d03\">if<\/span> <span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">LeerIR_bandera<\/span><span style=\"color: #434f54\">==<\/span><span style=\"color: #00979c\">false<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">{<\/span>\n \u00a0\u00a0\u00a0<span style=\"color: #000000\">LeerIR_bandera<\/span> <span style=\"color: #434f54\">=<\/span> <span style=\"color: #00979c\">true<\/span><span style=\"color: #000000\">;<\/span>\n \u00a0\u00a0\u00a0<span style=\"color: #000000\">LeerIR_estado<\/span> <span style=\"color: #434f54\">=<\/span> <span style=\"color: #00979c\">true<\/span><span style=\"color: #000000\">;<\/span>\n \u00a0\u00a0\u00a0<span style=\"color: #000000\">Leer_Activaestado<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\n \u00a0\u00a0\u00a0<span style=\"color: #000000\">publica_estado<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\n \u00a0\u00a0\u00a0<span style=\"color: #5e6d03\">if<\/span> <span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">serial_msg<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">{<\/span>\n \u00a0\u00a0\u00a0\u00a0\u00a0<b><span style=\"color: #d35400\">Serial<\/span><\/b><span style=\"color: #434f54\">.<\/span><span style=\"color: #d35400\">println<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #005c5f\">\" Leer IR activado...\"<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\n \u00a0\u00a0\u00a0\u00a0\u00a0<span style=\"color: #000000\">}<\/span>\n \u00a0\u00a0\u00a0<span style=\"color: #000000\">}<\/span>\n \u00a0<span style=\"color: #000000\">}<\/span>\n<span style=\"color: #00979c\">ICACHE_RAM_ATTR<\/span> <span style=\"color: #00979c\">void<\/span> <span style=\"color: #000000\">IR_Activado<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">{<\/span>\n \u00a0<span style=\"color: #434f54\">\/\/ evita repeticionese por rebotes del botonera<\/span>\n \u00a0<span style=\"color: #5e6d03\">if<\/span> <span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">actuador_bandera<\/span> <span style=\"color: #434f54\">==<\/span><span style=\"color: #00979c\">false<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">{<\/span>\n \u00a0\u00a0\u00a0<span style=\"color: #000000\">actuador_bandera<\/span> <span style=\"color: #434f54\">=<\/span> <span style=\"color: #00979c\">true<\/span><span style=\"color: #000000\">;<\/span>\n \u00a0\u00a0\u00a0<span style=\"color: #5e6d03\">if<\/span> <span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">actuador_estado<\/span> <span style=\"color: #434f54\">==<\/span> <span style=\"color: #00979c\">true<\/span><span style=\"color: #000000\">)<\/span> <span style=\"color: #000000\">{<\/span>\n \u00a0\u00a0\u00a0\u00a0\u00a0<span style=\"color: #000000\">actuador_estado<\/span> <span style=\"color: #434f54\">=<\/span> <span style=\"color: #00979c\">false<\/span><span style=\"color: #000000\">;<\/span>\n \u00a0\u00a0\u00a0\u00a0\u00a0<span style=\"color: #000000\">}<\/span><span style=\"color: #5e6d03\">else<\/span><span style=\"color: #000000\">{<\/span>\n \u00a0\u00a0\u00a0\u00a0\u00a0<span style=\"color: #000000\">actuador_estado<\/span> <span style=\"color: #434f54\">=<\/span> <span style=\"color: #00979c\">true<\/span><span style=\"color: #000000\">;<\/span>\n \u00a0\u00a0\u00a0\u00a0\u00a0<span style=\"color: #000000\">}<\/span>\n \u00a0\u00a0\u00a0<span style=\"color: #000000\">publica_estado<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\n \u00a0\u00a0\u00a0<span style=\"color: #5e6d03\">if<\/span> <span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">serial_msg<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">{<\/span>\n \u00a0\u00a0\u00a0\u00a0\u00a0<b><span style=\"color: #d35400\">Serial<\/span><\/b><span style=\"color: #434f54\">.<\/span><span style=\"color: #d35400\">println<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #005c5f\">\" IR_env\u00edo activado...\"<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\n \u00a0\u00a0\u00a0\u00a0\u00a0<span style=\"color: #000000\">}<\/span>\n \u00a0\u00a0\u00a0<span style=\"color: #000000\">}<\/span>\n \u00a0<span style=\"color: #000000\">}<\/span>\n\n<span style=\"color: #434f54\">\/\/ Actuador activar estado<\/span>\n<span style=\"color: #00979c\">void<\/span> <span style=\"color: #000000\">Leer_Activaestado<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">{<\/span>\n \u00a0\u00a0\u00a0<span style=\"color: #5e6d03\">if<\/span> <span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">LeerIR_estado<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">{<\/span>\n \u00a0\u00a0\u00a0\u00a0\u00a0<span style=\"color: #434f54\">\/\/ ACTUADOR ACTIVA EN LOW<\/span>\n \u00a0\u00a0\u00a0\u00a0\u00a0<span style=\"color: #434f54\">\/\/ LED actuador ilumina en apagado<\/span>\n \u00a0\u00a0\u00a0\u00a0\u00a0<span style=\"color: #d35400\">digitalWrite<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">LED_LeerIR<\/span><span style=\"color: #434f54\">,<\/span> <span style=\"color: #00979c\">LOW<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\n \u00a0\u00a0\u00a0<span style=\"color: #000000\">}<\/span><span style=\"color: #5e6d03\">else<\/span><span style=\"color: #000000\">{<\/span>\n \u00a0\u00a0\u00a0\u00a0\u00a0<span style=\"color: #d35400\">digitalWrite<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">LED_LeerIR<\/span><span style=\"color: #434f54\">,<\/span> <span style=\"color: #00979c\">HIGH<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\n \u00a0\u00a0\u00a0<span style=\"color: #000000\">}<\/span>\n \u00a0<span style=\"color: #000000\">}<\/span>\n\n<span style=\"color: #434f54\">\/\/ Publicar el estado del dispositivo<\/span>\n<span style=\"color: #00979c\">void<\/span> <span style=\"color: #000000\">publica_estado<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">)<\/span> <span style=\"color: #000000\">{<\/span>\n \u00a0\u00a0\u00a0<span style=\"color: #5e6d03\">if<\/span> <span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">actuador_estado<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">{<\/span>\n \u00a0\u00a0\u00a0\u00a0\u00a0<span style=\"color: #000000\">snprintf<\/span> <span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">MQTT_ActuadorEstado<\/span><span style=\"color: #434f54\">,<\/span><span style=\"color: #000000\">10<\/span><span style=\"color: #434f54\">,<\/span> <span style=\"color: #000000\">sensor_ON<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\n \u00a0\u00a0\u00a0<span style=\"color: #000000\">}<\/span><span style=\"color: #5e6d03\">else<\/span><span style=\"color: #000000\">{<\/span>\n \u00a0\u00a0\u00a0\u00a0\u00a0<span style=\"color: #000000\">snprintf<\/span> <span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">MQTT_ActuadorEstado<\/span><span style=\"color: #434f54\">,<\/span><span style=\"color: #000000\">10<\/span><span style=\"color: #434f54\">,<\/span> <span style=\"color: #000000\">sensor_OFF<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\n \u00a0\u00a0\u00a0<span style=\"color: #000000\">}<\/span>\n \u00a0\u00a0\u00a0<span style=\"color: #5e6d03\">if<\/span> <span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">LeerIR_estado<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">{<\/span>\n \u00a0\u00a0\u00a0\u00a0\u00a0<span style=\"color: #000000\">snprintf<\/span> <span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">MQTT_LeeIR<\/span><span style=\"color: #434f54\">,<\/span><span style=\"color: #000000\">10<\/span><span style=\"color: #434f54\">,<\/span> <span style=\"color: #000000\">sensor_ON<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\n \u00a0\u00a0\u00a0<span style=\"color: #000000\">}<\/span><span style=\"color: #5e6d03\">else<\/span><span style=\"color: #000000\">{<\/span>\n \u00a0\u00a0\u00a0\u00a0\u00a0<span style=\"color: #000000\">snprintf<\/span> <span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">MQTT_LeeIR<\/span><span style=\"color: #434f54\">,<\/span><span style=\"color: #000000\">10<\/span><span style=\"color: #434f54\">,<\/span> <span style=\"color: #000000\">sensor_OFF<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\n \u00a0\u00a0\u00a0<span style=\"color: #000000\">}<\/span>\n \u00a0\u00a0\u00a0<span style=\"color: #5e6d03\">if<\/span> <span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">mqttclient<\/span><span style=\"color: #434f54\">.<\/span><span style=\"color: #d35400\">connected<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #434f54\">==<\/span><span style=\"color: #00979c\">true<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">{<\/span>\n \u00a0\u00a0\u00a0\u00a0\u00a0<span style=\"color: #000000\">mqttclient<\/span><span style=\"color: #434f54\">.<\/span><span style=\"color: #d35400\">publish<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">MQTT_TOPIC<\/span><span style=\"color: #434f54\">,<\/span><span style=\"color: #000000\">MQTT_ActuadorEstado<\/span><span style=\"color: #434f54\">,<\/span><span style=\"color: #00979c\">true<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\n \u00a0\u00a0\u00a0\u00a0\u00a0<span style=\"color: #000000\">mqttclient<\/span><span style=\"color: #434f54\">.<\/span><span style=\"color: #d35400\">publish<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">MQTT_TOPIC_LeeIR<\/span><span style=\"color: #434f54\">,<\/span><span style=\"color: #000000\">MQTT_LeeIR<\/span><span style=\"color: #434f54\">,<\/span><span style=\"color: #00979c\">true<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\n \u00a0\u00a0\u00a0\u00a0\u00a0<span style=\"color: #000000\">mqttclient<\/span><span style=\"color: #434f54\">.<\/span><span style=\"color: #d35400\">publish<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">MQTT_TOPIC_T<\/span><span style=\"color: #434f54\">,<\/span><span style=\"color: #000000\">MQTT_DHT_T<\/span><span style=\"color: #434f54\">,<\/span><span style=\"color: #00979c\">true<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\n \u00a0\u00a0\u00a0\u00a0\u00a0<span style=\"color: #000000\">mqttclient<\/span><span style=\"color: #434f54\">.<\/span><span style=\"color: #d35400\">publish<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">MQTT_TOPIC_H<\/span><span style=\"color: #434f54\">,<\/span><span style=\"color: #000000\">MQTT_DHT_H<\/span><span style=\"color: #434f54\">,<\/span><span style=\"color: #00979c\">true<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\n \u00a0\u00a0\u00a0<span style=\"color: #000000\">}<\/span><span style=\"color: #5e6d03\">else<\/span><span style=\"color: #000000\">{<\/span>\n \u00a0\u00a0\u00a0\u00a0\u00a0<span style=\"color: #000000\">mqtt_desconectado<\/span> <span style=\"color: #434f54\">=<\/span> <span style=\"color: #00979c\">true<\/span><span style=\"color: #000000\">;<\/span>\n \u00a0\u00a0\u00a0<span style=\"color: #000000\">}<\/span>\n<span style=\"color: #000000\">}<\/span>\n\n<span style=\"color: #00979c\">void<\/span> <span style=\"color: #000000\">inicia_wifi<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">{<\/span>\n \u00a0<span style=\"color: #00979c\">int<\/span> <span style=\"color: #000000\">intentos<\/span> <span style=\"color: #434f54\">=<\/span> <span style=\"color: #000000\">10<\/span><span style=\"color: #000000\">;<\/span>\n \u00a0<span style=\"color: #00979c\">int<\/span> <span style=\"color: #000000\">cuenta<\/span> <span style=\"color: #434f54\">=<\/span> <span style=\"color: #000000\">0<\/span><span style=\"color: #000000\">;<\/span>\n\n \u00a0<span style=\"color: #5e6d03\">if<\/span> <span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">serial_msg<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">{<\/span>\n \u00a0\u00a0\u00a0<b><span style=\"color: #d35400\">Serial<\/span><\/b><span style=\"color: #434f54\">.<\/span><span style=\"color: #d35400\">print<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #005c5f\">\" WIFI Conectando a \"<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\n \u00a0\u00a0\u00a0<b><span style=\"color: #d35400\">Serial<\/span><\/b><span style=\"color: #434f54\">.<\/span><span style=\"color: #d35400\">println<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">ssid<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\n \u00a0\u00a0\u00a0<span style=\"color: #000000\">}<\/span>\n \u00a0<b><span style=\"color: #d35400\">WiFi<\/span><\/b><span style=\"color: #434f54\">.<\/span><span style=\"color: #d35400\">mode<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #00979c\">WIFI_STA<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\n \u00a0<b><span style=\"color: #d35400\">WiFi<\/span><\/b><span style=\"color: #434f54\">.<\/span><span style=\"color: #d35400\">begin<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">ssid<\/span><span style=\"color: #434f54\">,<\/span> <span style=\"color: #000000\">password<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\n \u00a0\n \u00a0<span style=\"color: #5e6d03\">while<\/span> <span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">(<\/span><b><span style=\"color: #d35400\">WiFi<\/span><\/b><span style=\"color: #434f54\">.<\/span><span style=\"color: #d35400\">status<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">)<\/span> <span style=\"color: #434f54\">!=<\/span> <span style=\"color: #000000\">WL_CONNECTED<\/span><span style=\"color: #000000\">)<\/span> <span style=\"color: #434f54\">&amp;&amp;<\/span> <span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">cuenta<\/span><span style=\"color: #434f54\">&lt;<\/span><span style=\"color: #000000\">intentos<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">{<\/span>\n \u00a0\u00a0\u00a0<span style=\"color: #5e6d03\">if<\/span> <span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">serial_msg<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">{<\/span>\n \u00a0\u00a0\u00a0\u00a0\u00a0<b><span style=\"color: #d35400\">Serial<\/span><\/b><span style=\"color: #434f54\">.<\/span><span style=\"color: #d35400\">print<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #005c5f\">\".\"<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\n \u00a0\u00a0\u00a0\u00a0\u00a0<span style=\"color: #000000\">}<\/span>\n \u00a0\u00a0\u00a0<span style=\"color: #000000\">cuenta<\/span> <span style=\"color: #434f54\">=<\/span> <span style=\"color: #000000\">cuenta<\/span><span style=\"color: #434f54\">+<\/span><span style=\"color: #000000\">1<\/span><span style=\"color: #000000\">;<\/span>\n \u00a0\u00a0\u00a0<span style=\"color: #434f54\">\/\/ Parpadeo de Monitor enciende en LOW<\/span>\n \u00a0\u00a0\u00a0<span style=\"color: #d35400\">digitalWrite<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">LED_pin<\/span><span style=\"color: #434f54\">,<\/span> <span style=\"color: #00979c\">LOW<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\n \u00a0\u00a0\u00a0<span style=\"color: #d35400\">delay<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">300<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\n \u00a0\u00a0\u00a0<span style=\"color: #d35400\">digitalWrite<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">LED_pin<\/span><span style=\"color: #434f54\">,<\/span> <span style=\"color: #00979c\">HIGH<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\n \u00a0\u00a0\u00a0<span style=\"color: #d35400\">delay<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">200<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\n \u00a0\u00a0\u00a0<span style=\"color: #000000\">}<\/span>\n \u00a0<span style=\"color: #5e6d03\">if<\/span> <span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">serial_msg<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">{<\/span>\n \u00a0\u00a0\u00a0<span style=\"color: #434f54\">\/\/Fin de \"...\"<\/span>\n \u00a0\u00a0\u00a0<b><span style=\"color: #d35400\">Serial<\/span><\/b><span style=\"color: #434f54\">.<\/span><span style=\"color: #d35400\">println<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\n \u00a0\u00a0\u00a0<span style=\"color: #5e6d03\">if<\/span> <span style=\"color: #000000\">(<\/span><b><span style=\"color: #d35400\">WiFi<\/span><\/b><span style=\"color: #434f54\">.<\/span><span style=\"color: #d35400\">status<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">)<\/span> <span style=\"color: #434f54\">==<\/span> <span style=\"color: #000000\">WL_CONNECTED<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">{<\/span>\n \u00a0\u00a0\u00a0\u00a0\u00a0<b><span style=\"color: #d35400\">Serial<\/span><\/b><span style=\"color: #434f54\">.<\/span><span style=\"color: #d35400\">print<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #005c5f\">\" Estado: \"<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\n \u00a0\u00a0\u00a0\u00a0\u00a0<b><span style=\"color: #d35400\">Serial<\/span><\/b><span style=\"color: #434f54\">.<\/span><span style=\"color: #d35400\">println<\/span><span style=\"color: #000000\">(<\/span><b><span style=\"color: #d35400\">WiFi<\/span><\/b><span style=\"color: #434f54\">.<\/span><span style=\"color: #d35400\">status<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\n \u00a0\u00a0\u00a0\u00a0\u00a0<b><span style=\"color: #d35400\">Serial<\/span><\/b><span style=\"color: #434f54\">.<\/span><span style=\"color: #d35400\">print<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #005c5f\">\" MAC: \"<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\n \u00a0\u00a0\u00a0\u00a0\u00a0<b><span style=\"color: #d35400\">Serial<\/span><\/b><span style=\"color: #434f54\">.<\/span><span style=\"color: #d35400\">println<\/span><span style=\"color: #000000\">(<\/span><b><span style=\"color: #d35400\">WiFi<\/span><\/b><span style=\"color: #434f54\">.<\/span><span style=\"color: #d35400\">macAddress<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\n \u00a0\u00a0\u00a0\u00a0\u00a0<b><span style=\"color: #d35400\">Serial<\/span><\/b><span style=\"color: #434f54\">.<\/span><span style=\"color: #d35400\">print<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #005c5f\">\" IP: \"<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\n \u00a0\u00a0\u00a0\u00a0\u00a0<b><span style=\"color: #d35400\">Serial<\/span><\/b><span style=\"color: #434f54\">.<\/span><span style=\"color: #d35400\">println<\/span><span style=\"color: #000000\">(<\/span><b><span style=\"color: #d35400\">WiFi<\/span><\/b><span style=\"color: #434f54\">.<\/span><span style=\"color: #d35400\">localIP<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\n \u00a0\u00a0\u00a0\u00a0\u00a0<b><span style=\"color: #d35400\">Serial<\/span><\/b><span style=\"color: #434f54\">.<\/span><span style=\"color: #d35400\">print<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #005c5f\">\" RSSI: \"<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\n \u00a0\u00a0\u00a0\u00a0\u00a0<b><span style=\"color: #d35400\">Serial<\/span><\/b><span style=\"color: #434f54\">.<\/span><span style=\"color: #d35400\">println<\/span><span style=\"color: #000000\">(<\/span><b><span style=\"color: #d35400\">WiFi<\/span><\/b><span style=\"color: #434f54\">.<\/span><span style=\"color: #d35400\">RSSI<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\n \u00a0\u00a0\u00a0\u00a0\u00a0<b><span style=\"color: #d35400\">Serial<\/span><\/b><span style=\"color: #434f54\">.<\/span><span style=\"color: #d35400\">println<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\n \u00a0\u00a0\u00a0\u00a0\u00a0<span style=\"color: #000000\">}<\/span>\n \u00a0\u00a0\u00a0<span style=\"color: #5e6d03\">if<\/span> <span style=\"color: #000000\">(<\/span><b><span style=\"color: #d35400\">WiFi<\/span><\/b><span style=\"color: #434f54\">.<\/span><span style=\"color: #d35400\">status<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">)<\/span> <span style=\"color: #434f54\">!=<\/span> <span style=\"color: #000000\">WL_CONNECTED<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">{<\/span>\n \u00a0\u00a0\u00a0\u00a0\u00a0<b><span style=\"color: #d35400\">WiFi<\/span><\/b><span style=\"color: #434f54\">.<\/span><span style=\"color: #d35400\">printDiag<\/span><span style=\"color: #000000\">(<\/span><b><span style=\"color: #d35400\">Serial<\/span><\/b><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\n \u00a0\u00a0\u00a0\u00a0\u00a0<b><span style=\"color: #d35400\">Serial<\/span><\/b><span style=\"color: #434f54\">.<\/span><span style=\"color: #d35400\">println<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\n \u00a0\u00a0\u00a0\u00a0\u00a0<span style=\"color: #000000\">}<\/span>\n \u00a0\u00a0\u00a0<span style=\"color: #000000\">}<\/span>\n \u00a0<span style=\"color: #000000\">}<\/span>\n\n<span style=\"color: #00979c\">void<\/span> <span style=\"color: #000000\">inicia_mqtt<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">{<\/span>\n \u00a0<span style=\"color: #00979c\">int<\/span> <span style=\"color: #000000\">intentos<\/span> <span style=\"color: #434f54\">=<\/span> <span style=\"color: #000000\">2<\/span><span style=\"color: #000000\">;<\/span>\n \u00a0<span style=\"color: #00979c\">int<\/span> <span style=\"color: #000000\">cuenta<\/span> <span style=\"color: #434f54\">=<\/span> <span style=\"color: #000000\">0<\/span><span style=\"color: #000000\">;<\/span>\n \u00a0\n \u00a0<span style=\"color: #5e6d03\">if<\/span> <span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">serial_msg<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">{<\/span>\n \u00a0\u00a0\u00a0<b><span style=\"color: #d35400\">Serial<\/span><\/b><span style=\"color: #434f54\">.<\/span><span style=\"color: #d35400\">print<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #005c5f\">\" MQTT Conectando a \"<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\n \u00a0\u00a0\u00a0<b><span style=\"color: #d35400\">Serial<\/span><\/b><span style=\"color: #434f54\">.<\/span><span style=\"color: #d35400\">println<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">MQTT_IP<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\n \u00a0\u00a0\u00a0<span style=\"color: #000000\">}<\/span>\n \u00a0\n \u00a0<span style=\"color: #000000\">mqttclient<\/span><span style=\"color: #434f54\">.<\/span><span style=\"color: #d35400\">setServer<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">MQTT_IP<\/span><span style=\"color: #434f54\">,<\/span> <span style=\"color: #000000\">MQTT_puerto<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\n \u00a0<span style=\"color: #000000\">mqttclient<\/span><span style=\"color: #434f54\">.<\/span><span style=\"color: #d35400\">connect<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">MQTT_ID<\/span><span style=\"color: #434f54\">,<\/span> <span style=\"color: #000000\">MQTT_usuario<\/span><span style=\"color: #434f54\">,<\/span> <span style=\"color: #000000\">MQTT_contrasena<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\n \u00a0<span style=\"color: #000000\">mqttclient<\/span><span style=\"color: #434f54\">.<\/span><span style=\"color: #d35400\">setCallback<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">callback<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\n \u00a0\n \u00a0<span style=\"color: #5e6d03\">while<\/span> <span style=\"color: #000000\">(<\/span><span style=\"color: #434f54\">!<\/span><span style=\"color: #000000\">mqttclient<\/span><span style=\"color: #434f54\">.<\/span><span style=\"color: #d35400\">connected<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">)<\/span> <span style=\"color: #434f54\">&amp;&amp;<\/span> <span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">cuenta<\/span><span style=\"color: #434f54\">&lt;<\/span><span style=\"color: #000000\">intentos<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">)<\/span> <span style=\"color: #000000\">{<\/span>\n\n \u00a0\u00a0\u00a0<span style=\"color: #5e6d03\">if<\/span> <span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">serial_msg<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">{<\/span>\n \u00a0\u00a0\u00a0\u00a0\u00a0<b><span style=\"color: #d35400\">Serial<\/span><\/b><span style=\"color: #434f54\">.<\/span><span style=\"color: #d35400\">print<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #005c5f\">\".\"<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\n \u00a0\u00a0\u00a0<span style=\"color: #000000\">}<\/span>\n \u00a0\u00a0\u00a0\n \u00a0\u00a0\u00a0<span style=\"color: #000000\">cuenta<\/span> <span style=\"color: #434f54\">=<\/span> <span style=\"color: #000000\">cuenta<\/span> <span style=\"color: #434f54\">+<\/span> <span style=\"color: #000000\">1<\/span><span style=\"color: #000000\">;<\/span>\n \u00a0\u00a0\u00a0<span style=\"color: #434f54\">\/\/ Parpadeo de Monitor enciende en LOW<\/span>\n \u00a0\u00a0\u00a0<span style=\"color: #d35400\">digitalWrite<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">LED_pin<\/span><span style=\"color: #434f54\">,<\/span> <span style=\"color: #00979c\">LOW<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\n \u00a0\u00a0\u00a0<span style=\"color: #d35400\">delay<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">200<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\n \u00a0\u00a0\u00a0<span style=\"color: #d35400\">digitalWrite<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">LED_pin<\/span><span style=\"color: #434f54\">,<\/span> <span style=\"color: #00979c\">HIGH<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\n \u00a0\u00a0\u00a0<span style=\"color: #d35400\">delay<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">200<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\n \u00a0\u00a0\u00a0<span style=\"color: #000000\">}<\/span>\n \u00a0<span style=\"color: #000000\">publica_estado<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\n \u00a0<span style=\"color: #000000\">mqttclient<\/span><span style=\"color: #434f54\">.<\/span><span style=\"color: #d35400\">subscribe<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">MQTT_COMMAND<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\n \u00a0<span style=\"color: #000000\">mqttclient<\/span><span style=\"color: #434f54\">.<\/span><span style=\"color: #d35400\">subscribe<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">MQTT_COMMAND_LeeIR<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\n \u00a0<span style=\"color: #000000\">mqttclient<\/span><span style=\"color: #434f54\">.<\/span><span style=\"color: #d35400\">subscribe<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">MQTT_COMMAND_DHT<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\n \u00a0\n \u00a0<span style=\"color: #5e6d03\">if<\/span> <span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">serial_msg<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">{<\/span>\n \u00a0\u00a0\u00a0<span style=\"color: #434f54\">\/\/Fin de \"...\"<\/span>\n \u00a0\u00a0\u00a0<b><span style=\"color: #d35400\">Serial<\/span><\/b><span style=\"color: #434f54\">.<\/span><span style=\"color: #d35400\">println<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\n \u00a0\u00a0\u00a0<b><span style=\"color: #d35400\">Serial<\/span><\/b><span style=\"color: #434f54\">.<\/span><span style=\"color: #d35400\">print<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #005c5f\">\" MQTT Conectado: \"<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\n \u00a0\u00a0\u00a0<b><span style=\"color: #d35400\">Serial<\/span><\/b><span style=\"color: #434f54\">.<\/span><span style=\"color: #d35400\">println<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">mqttclient<\/span><span style=\"color: #434f54\">.<\/span><span style=\"color: #d35400\">connected<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\n \u00a0\u00a0\u00a0<b><span style=\"color: #d35400\">Serial<\/span><\/b><span style=\"color: #434f54\">.<\/span><span style=\"color: #d35400\">print<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #005c5f\">\" MQTT Estado: \"<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\n \u00a0\u00a0\u00a0<b><span style=\"color: #d35400\">Serial<\/span><\/b><span style=\"color: #434f54\">.<\/span><span style=\"color: #d35400\">println<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">mqttclient<\/span><span style=\"color: #434f54\">.<\/span><span style=\"color: #000000\">state<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\n \u00a0\u00a0\u00a0<span style=\"color: #000000\">}<\/span>\n \u00a0<span style=\"color: #000000\">}<\/span>\n\n<span style=\"color: #434f54\">\/\/ llega mensaje MQTT<\/span>\n<span style=\"color: #00979c\">void<\/span> <span style=\"color: #000000\">callback<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #00979c\">char<\/span><span style=\"color: #434f54\">*<\/span> <span style=\"color: #000000\">p_topic<\/span><span style=\"color: #434f54\">,<\/span> <span style=\"color: #00979c\">byte<\/span><span style=\"color: #434f54\">*<\/span> <span style=\"color: #000000\">p_payload<\/span><span style=\"color: #434f54\">,<\/span> <span style=\"color: #00979c\">unsigned<\/span> <span style=\"color: #00979c\">int<\/span> <span style=\"color: #000000\">p_length<\/span><span style=\"color: #000000\">)<\/span> <span style=\"color: #000000\">{<\/span>\n \u00a0<span style=\"color: #434f54\">\/\/ convierte a texto<\/span>\n \u00a0<span style=\"color: #00979c\">String<\/span> <span style=\"color: #000000\">payload<\/span><span style=\"color: #000000\">;<\/span>\n \u00a0<span style=\"color: #5e6d03\">for<\/span> <span style=\"color: #000000\">(<\/span><span style=\"color: #00979c\">uint8_t<\/span> <span style=\"color: #000000\">i<\/span> <span style=\"color: #434f54\">=<\/span> <span style=\"color: #000000\">0<\/span><span style=\"color: #000000\">;<\/span> <span style=\"color: #000000\">i<\/span> <span style=\"color: #434f54\">&lt;<\/span> <span style=\"color: #000000\">p_length<\/span><span style=\"color: #000000\">;<\/span> <span style=\"color: #000000\">i<\/span><span style=\"color: #434f54\">++<\/span><span style=\"color: #000000\">)<\/span> <span style=\"color: #000000\">{<\/span>\n \u00a0\u00a0\u00a0<span style=\"color: #000000\">payload<\/span><span style=\"color: #434f54\">.<\/span><span style=\"color: #d35400\">concat<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #00979c\">char<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">p_payload<\/span><span style=\"color: #000000\">[<\/span><span style=\"color: #000000\">i<\/span><span style=\"color: #000000\">]<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\n \u00a0\u00a0\u00a0<span style=\"color: #000000\">}<\/span>\n \u00a0<span style=\"color: #434f54\">\/\/ revisa mensaje por topico<\/span>\n \u00a0<span style=\"color: #5e6d03\">if<\/span> <span style=\"color: #000000\">(<\/span><span style=\"color: #00979c\">String<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">MQTT_COMMAND<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #434f54\">.<\/span><span style=\"color: #d35400\">equals<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">p_topic<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">)<\/span> <span style=\"color: #000000\">{<\/span>\n \u00a0\u00a0\u00a0<span style=\"color: #5e6d03\">if<\/span> <span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">payload<\/span><span style=\"color: #434f54\">.<\/span><span style=\"color: #d35400\">equals<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #00979c\">String<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">sensor_ON<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">)<\/span> <span style=\"color: #000000\">{<\/span>\n \u00a0\u00a0\u00a0\u00a0\u00a0<span style=\"color: #5e6d03\">if<\/span> <span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">actuador_estado<\/span> <span style=\"color: #434f54\">!=<\/span> <span style=\"color: #00979c\">true<\/span><span style=\"color: #000000\">)<\/span> <span style=\"color: #000000\">{<\/span>\n \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span style=\"color: #000000\">actuador_estado<\/span> <span style=\"color: #434f54\">=<\/span> <span style=\"color: #00979c\">true<\/span><span style=\"color: #000000\">;<\/span>\n \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span style=\"color: #000000\">}<\/span>\n \u00a0\u00a0\u00a0\u00a0\u00a0<span style=\"color: #000000\">}<\/span>\n \u00a0\u00a0\u00a0<span style=\"color: #5e6d03\">if<\/span> <span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">payload<\/span><span style=\"color: #434f54\">.<\/span><span style=\"color: #d35400\">equals<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #00979c\">String<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">sensor_OFF<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">)<\/span> <span style=\"color: #000000\">{<\/span>\n \u00a0\u00a0\u00a0\u00a0\u00a0<span style=\"color: #5e6d03\">if<\/span> <span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">actuador_estado<\/span> <span style=\"color: #434f54\">!=<\/span> <span style=\"color: #00979c\">false<\/span><span style=\"color: #000000\">)<\/span> <span style=\"color: #000000\">{<\/span>\n \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span style=\"color: #000000\">actuador_estado<\/span> <span style=\"color: #434f54\">=<\/span> <span style=\"color: #00979c\">false<\/span><span style=\"color: #000000\">;<\/span>\n \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span style=\"color: #000000\">}<\/span>\n \u00a0\u00a0\u00a0\u00a0\u00a0<span style=\"color: #000000\">}<\/span>\n \u00a0\u00a0\u00a0<span style=\"color: #000000\">Leer_Activaestado<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\n \u00a0\u00a0\u00a0<span style=\"color: #000000\">publica_estado<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\n \u00a0\u00a0\u00a0<span style=\"color: #000000\">actuador_bandera<\/span> <span style=\"color: #434f54\">=<\/span> <span style=\"color: #00979c\">true<\/span><span style=\"color: #000000\">;<\/span>\n \u00a0\u00a0\u00a0<span style=\"color: #000000\">}<\/span>\n\n \u00a0<span style=\"color: #5e6d03\">if<\/span> <span style=\"color: #000000\">(<\/span><span style=\"color: #00979c\">String<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">MQTT_COMMAND_LeeIR<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #434f54\">.<\/span><span style=\"color: #d35400\">equals<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">p_topic<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">)<\/span> <span style=\"color: #000000\">{<\/span>\n \u00a0\u00a0\u00a0<span style=\"color: #5e6d03\">if<\/span> <span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">payload<\/span><span style=\"color: #434f54\">.<\/span><span style=\"color: #d35400\">equals<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #00979c\">String<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">sensor_ON<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">)<\/span> <span style=\"color: #000000\">{<\/span>\n \u00a0\u00a0\u00a0\u00a0\u00a0<span style=\"color: #5e6d03\">if<\/span> <span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">LeerIR_estado<\/span> <span style=\"color: #434f54\">!=<\/span> <span style=\"color: #00979c\">true<\/span><span style=\"color: #000000\">)<\/span> <span style=\"color: #000000\">{<\/span>\n \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span style=\"color: #000000\">LeerIR_estado<\/span> <span style=\"color: #434f54\">=<\/span> <span style=\"color: #00979c\">true<\/span><span style=\"color: #000000\">;<\/span>\n \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span style=\"color: #000000\">}<\/span>\n \u00a0\u00a0\u00a0\u00a0\u00a0<span style=\"color: #000000\">}<\/span>\n \u00a0\u00a0\u00a0<span style=\"color: #5e6d03\">if<\/span> <span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">payload<\/span><span style=\"color: #434f54\">.<\/span><span style=\"color: #d35400\">equals<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #00979c\">String<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">sensor_OFF<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">)<\/span> <span style=\"color: #000000\">{<\/span>\n \u00a0\u00a0\u00a0\u00a0\u00a0<span style=\"color: #5e6d03\">if<\/span> <span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">LeerIR_estado<\/span> <span style=\"color: #434f54\">!=<\/span> <span style=\"color: #00979c\">false<\/span><span style=\"color: #000000\">)<\/span> <span style=\"color: #000000\">{<\/span>\n \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span style=\"color: #000000\">LeerIR_estado<\/span> <span style=\"color: #434f54\">=<\/span> <span style=\"color: #00979c\">false<\/span><span style=\"color: #000000\">;<\/span>\n \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span style=\"color: #000000\">}<\/span>\n \u00a0\u00a0\u00a0\u00a0\u00a0<span style=\"color: #000000\">}<\/span>\n \u00a0\u00a0\u00a0<span style=\"color: #000000\">LeerIR_bandera<\/span> <span style=\"color: #434f54\">=<\/span> <span style=\"color: #00979c\">true<\/span><span style=\"color: #000000\">;<\/span>\n \u00a0\u00a0\u00a0<span style=\"color: #000000\">Leer_Activaestado<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\n \u00a0\u00a0\u00a0<span style=\"color: #000000\">publica_estado<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\n \u00a0\u00a0\u00a0<span style=\"color: #000000\">}<\/span>\n \u00a0<span style=\"color: #5e6d03\">if<\/span> <span style=\"color: #000000\">(<\/span><span style=\"color: #00979c\">String<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">MQTT_COMMAND_DHT<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #434f54\">.<\/span><span style=\"color: #d35400\">equals<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">p_topic<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">)<\/span> <span style=\"color: #000000\">{<\/span>\n \u00a0\u00a0\u00a0<span style=\"color: #000000\">antes<\/span> <span style=\"color: #434f54\">=<\/span> <span style=\"color: #000000\">antes<\/span><span style=\"color: #434f54\">-<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">intervalo<\/span><span style=\"color: #434f54\">+<\/span><span style=\"color: #000000\">2<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\n \u00a0\u00a0\u00a0<span style=\"color: #000000\">}<\/span>\n \u00a0<span style=\"color: #000000\">}<\/span>\n<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Instrucciones Las instrucciones enfocadas en cada sensor o actividad se resumen en funciones, tratando de mantener la simplicidad del lazo principal. Las instrucciones incorporan las siguientes caracter\u00edsticas: el boton config_IR, una vez presionado espera hasta recibir una se\u00f1al infraroja que se lee, y graba. el Env\u00edo de la se\u00f1al se realiza con la instrucci\u00f3n MQTT &hellip; <\/p>\n<p class=\"link-more\"><a href=\"https:\/\/blog.espol.edu.ec\/girni\/control-remoto-ir-archivo-ino\/\" class=\"more-link\">Continuar leyendo<span class=\"screen-reader-text\"> \"5.3 IoT WiFi Control Remoto IR: Archivo.ino\"<\/span><\/a><\/p>\n","protected":false},"author":8043,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1430994],"tags":[],"class_list":["post-1873","post","type-post","status-publish","format-standard","hentry","category-5-sensor-actuador-control-remoto-infrarojo"],"_links":{"self":[{"href":"https:\/\/blog.espol.edu.ec\/girni\/wp-json\/wp\/v2\/posts\/1873","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.espol.edu.ec\/girni\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.espol.edu.ec\/girni\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/girni\/wp-json\/wp\/v2\/users\/8043"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/girni\/wp-json\/wp\/v2\/comments?post=1873"}],"version-history":[{"count":2,"href":"https:\/\/blog.espol.edu.ec\/girni\/wp-json\/wp\/v2\/posts\/1873\/revisions"}],"predecessor-version":[{"id":2661,"href":"https:\/\/blog.espol.edu.ec\/girni\/wp-json\/wp\/v2\/posts\/1873\/revisions\/2661"}],"wp:attachment":[{"href":"https:\/\/blog.espol.edu.ec\/girni\/wp-json\/wp\/v2\/media?parent=1873"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/girni\/wp-json\/wp\/v2\/categories?post=1873"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/girni\/wp-json\/wp\/v2\/tags?post=1873"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}