{"id":1840,"date":"2019-08-10T09:16:55","date_gmt":"2019-08-10T14:16:55","guid":{"rendered":"http:\/\/blog.espol.edu.ec\/edelros\/?p=1840"},"modified":"2020-09-26T15:00:18","modified_gmt":"2020-09-26T20:00:18","slug":"interruptor-tomacorriente-archivo-ino","status":"publish","type":"post","link":"https:\/\/blog.espol.edu.ec\/girni\/interruptor-tomacorriente-archivo-ino\/","title":{"rendered":"3.3 IoT WiFi Interruptor-Tomacorriente: Archivo.ino"},"content":{"rendered":"<h4>1. Instrucciones en Arduino IDE<\/h4>\n<p>Como la versi\u00f3n del ESP8266-01 no dispone de muchos pines de trabajo, se define el uso de los pines como:<\/p>\n<ul>\n<li>Lectura del <strong>sensor <\/strong>interruptor en GPIO1, que tambi\u00e9n es TXD configurado (setup) como entrada (INPUT).<\/li>\n<li>Control <strong>actuador<\/strong> con relay en GPIO3,\u00a0 que tambi\u00e9n es RXD configurado en modo de salida (OUTPUT).<\/li>\n<li>Monitor de operaci\u00f3n del dispositivo: LED actuador GPIO2<\/li>\n<li>Monitor de conexi\u00f3n a la red: LED conexi\u00f3n GPIO0<\/li>\n<\/ul>\n<p>Por el uso en operaci\u00f3n de los pines de comunicaci\u00f3n Serial (GPIO1 y GPIO3) se descartan las lineas Serial.print().<\/p>\n<p>Si la subida del archivo.ino al m\u00f3dulo ESP01\u00a0 se realiza fuera de la placa PCB.<br \/>\nSi el dise\u00f1o realizado permite conectar un m\u00f3dulo USB-TTL a la placa PCB. Revise la configuraci\u00f3n de las botoneras Reset, PROG o DIP-switch para realizar la carga del <strong><em>archivo.ino<\/em><\/strong>.<\/p>\n<h4>2. Funciones repetitivas<\/h4>\n<p>La conexi\u00f3n a WIFI y comunicaci\u00f3n por MQTT\u00a0 al ser repetitivas entre algoritmos se separan en funciones,\u00a0 simplificando la configuraci\u00f3n inicial (setup) y el bloque principal (loop).<\/p>\n<p>Al inicio se definen las librer\u00edas y los valores para la conexi\u00f3n WIFI y los datos para comunicarse con el servidor MQTT-Mosquitto implementado en el Raspberry. Revisar de ser necesario la secci\u00f3n \"Broker\".<\/p>\n<h5>2.1 funci\u00f3n para actuador<\/h5>\n<p>Para procesar las instrucciones enviadas por el broker MQTT se dispne de la funci\u00f3n callback().<\/p>\n<p>Para el control del Rel\u00e9 se usa la funci\u00f3n <code>ACTUADORactivaestado()<\/code>.<\/p>\n<h5>2.2 Funci\u00f3n para sensor<\/h5>\n<p>Para monitorear sensor se usa una interrupci\u00f3n para sensar cambios de estado. Por el control de rebotes, se considera los intervalos entre cambios implementado en la funci\u00f3n SensorActivado(). De confirmarse el cambio se pasa a publicar el estado en el broker MQTT con SENSORpublicaestado()<\/p>\n<hr \/>\n<pre><span style=\"color: #95a5a6\">\/* ESP8266 Interruptor AC.<\/span>\n<span style=\"color: #95a5a6\"> * \u00a0edelros@espol.edu.ec<\/span>\n<span style=\"color: #95a5a6\"> * \u00a0Sensor-Actuador Binario, <\/span>\n<span style=\"color: #95a5a6\"> * \u00a0control de un Relay con Tomacorriente o foco.<\/span>\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: #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\">\"xxxx\"<\/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\">\"xxxx\"<\/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.xx.xx\"<\/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_luz1\"<\/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\/luz1\/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\/luz1\/cambia\"<\/span><span style=\"color: #000000\">;<\/span>\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\">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 Tomacorriente-Luz<\/span>\n<span style=\"color: #00979c\">const<\/span> <span style=\"color: #00979c\">uint8_t<\/span> <span style=\"color: #000000\">actuador_pin<\/span> <span style=\"color: #434f54\">=<\/span> <span style=\"color: #000000\">3<\/span><span style=\"color: #000000\">;<\/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\n<span style=\"color: #434f54\">\/\/ Sensor Interruptor<\/span>\n<span style=\"color: #00979c\">const<\/span> <span style=\"color: #00979c\">uint8_t<\/span> <span style=\"color: #000000\">sensor_pin<\/span> <span style=\"color: #434f54\">=<\/span> <span style=\"color: #000000\">1<\/span><span style=\"color: #000000\">;<\/span>\n<span style=\"color: #00979c\">volatile<\/span> <span style=\"color: #00979c\">boolean<\/span> <span style=\"color: #000000\">sensor_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\">sensor_bandera<\/span> <span style=\"color: #434f54\">=<\/span> <span style=\"color: #00979c\">true<\/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\">0<\/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_actuador<\/span> <span style=\"color: #434f54\">=<\/span> <span style=\"color: #000000\">2<\/span><span style=\"color: #000000\">;<\/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: #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<span style=\"color: #434f54\">\/\/ SENSOR Interruptor<\/span>\n \u00a0<span style=\"color: #d35400\">pinMode<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">sensor_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\">sensor_pin<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #434f54\">,<\/span><span style=\"color: #000000\">sensorActivado<\/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\">\/\/ ACTUADOR Tomacorriente<\/span>\n \u00a0<span style=\"color: #d35400\">pinMode<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">actuador_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: #d35400\">pinMode<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">LED_actuador<\/span><span style=\"color: #434f54\">,<\/span> <span style=\"color: #00979c\">OUTPUT<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\n \u00a0\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 \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\">\/\/ Revisa cambios en interruptor<\/span>\n \u00a0<span style=\"color: #5e6d03\">if<\/span> <span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">sensor_bandera<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">{<\/span>\n \u00a0\u00a0\u00a0\u00a0\u00a0<span style=\"color: #d35400\">delay<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">10<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\n \u00a0\u00a0\u00a0\u00a0\u00a0<span style=\"color: #000000\">sensor_estado<\/span> <span style=\"color: #434f54\">=<\/span> <span style=\"color: #d35400\">digitalRead<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">sensor_pin<\/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\">sensor_estado<\/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\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: #5e6d03\">if<\/span> <span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">sensor_estado<\/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\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>\n \u00a0\u00a0\u00a0<span style=\"color: #000000\">ACTUADORactivaestado<\/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\">sensor_bandera<\/span> <span style=\"color: #434f54\">=<\/span> <span style=\"color: #00979c\">false<\/span><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 \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: #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\">sensorActivado<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">{<\/span>\n \u00a0<span style=\"color: #000000\">sensor_bandera<\/span> <span style=\"color: #434f54\">=<\/span> <span style=\"color: #00979c\">true<\/span><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\">ACTUADORactivaestado<\/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><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: #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\">actuador_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\u00a0\u00a0<span style=\"color: #d35400\">digitalWrite<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">LED_actuador<\/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><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\">actuador_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\u00a0\u00a0<span style=\"color: #d35400\">digitalWrite<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">LED_actuador<\/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>\n\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\">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<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 \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: #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: #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: #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 \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\">}<\/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> \u00a0<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\">ACTUADORactivaestado<\/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: #000000\">}<\/span>\n\n<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>1. Instrucciones en Arduino IDE Como la versi\u00f3n del ESP8266-01 no dispone de muchos pines de trabajo, se define el uso de los pines como: Lectura del sensor interruptor en GPIO1, que tambi\u00e9n es TXD configurado (setup) como entrada (INPUT). Control actuador con relay en GPIO3,\u00a0 que tambi\u00e9n es RXD configurado en modo de salida &hellip; <\/p>\n<p class=\"link-more\"><a href=\"https:\/\/blog.espol.edu.ec\/girni\/interruptor-tomacorriente-archivo-ino\/\" class=\"more-link\">Continuar leyendo<span class=\"screen-reader-text\"> \"3.3 IoT WiFi Interruptor-Tomacorriente: 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":[1431667],"tags":[],"class_list":["post-1840","post","type-post","status-publish","format-standard","hentry","category-3-sensor-actuador-interruptor-ac"],"_links":{"self":[{"href":"https:\/\/blog.espol.edu.ec\/girni\/wp-json\/wp\/v2\/posts\/1840","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=1840"}],"version-history":[{"count":2,"href":"https:\/\/blog.espol.edu.ec\/girni\/wp-json\/wp\/v2\/posts\/1840\/revisions"}],"predecessor-version":[{"id":2654,"href":"https:\/\/blog.espol.edu.ec\/girni\/wp-json\/wp\/v2\/posts\/1840\/revisions\/2654"}],"wp:attachment":[{"href":"https:\/\/blog.espol.edu.ec\/girni\/wp-json\/wp\/v2\/media?parent=1840"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/girni\/wp-json\/wp\/v2\/categories?post=1840"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/girni\/wp-json\/wp\/v2\/tags?post=1840"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}