{"id":1160,"date":"2016-12-11T18:59:23","date_gmt":"2016-12-11T23:59:23","guid":{"rendered":"http:\/\/blog.espol.edu.ec\/taws\/?p=1160"},"modified":"2016-12-11T18:59:23","modified_gmt":"2016-12-11T23:59:23","slug":"control-de-aparatos-electricos-de-forma-remota","status":"publish","type":"post","link":"https:\/\/blog.espol.edu.ec\/taws\/2016\/12\/11\/control-de-aparatos-electricos-de-forma-remota\/","title":{"rendered":"Control de aparatos electricos de forma remota"},"content":{"rendered":"<p><strong>Introduccion<\/strong><\/p>\n<p>Actualmente el Iot(internet of thing) es una tendencia en el mundo que va creciendo cada dias mas, sin duda comenzar a experimentar con peque\u00f1os proyectos nos brinda la oportunidad de conocer\u00a0 lo importante y critico que resulta el desarrollo de aplicaciones que controlen aparatos electricos.<\/p>\n<p><strong>Desarrollo<\/strong><\/p>\n<p>Voy a mostrar en este tutorial como encender o apagar un foco de forma remota a-traves\u00a0 de una aplicacion web, usando un servicion Rest de por medio.<\/p>\n<p><strong>Materiales<\/strong><\/p>\n<p>Arduino yun<\/p>\n<p>Sensor de corriente para arduino con una corriente maxima de 5A<\/p>\n<p>Rele para arduino con un soporte de hasta 220v<\/p>\n<p>Foco o lampara.<\/p>\n<p><strong>Conocimientos Previos<\/strong><\/p>\n<p>Se necesita conocimientos previos en C++<\/p>\n<p><strong>Servicio Rest<\/strong><\/p>\n<p>Rest deriva de \"Representational State Transfer\"\u00a0 es un estilo de\u00a0 arquitectura\u00a0 software\u00a0 para desarrollar servicios. Los servicios web que siguen este estilo deben cumplir con las siguientes premisas.<\/p>\n<p><strong>Cliente y Servidor<\/strong> .- Definen un interface de\u00a0comunicaci\u00f3n\u00a0entre ambos separando completamente las responsabilidades entre ambas partes<\/p>\n<p><a href=\"http:\/\/blog.espol.edu.ec\/taws\/files\/2016\/12\/imagen_cliente_servidor.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1164\" src=\"http:\/\/blog.espol.edu.ec\/taws\/files\/2016\/12\/imagen_cliente_servidor.png\" alt=\"imagen_cliente_servidor\" width=\"300\" height=\"79\" \/><\/a><\/p>\n<p><strong>Sin Estado<\/strong> .- Son servicios web que no mantienen \u00a0estado asociado al cliente.Cada\u00a0petici\u00f3n\u00a0que se realiza a ellos es completamente independiente de la siguiente . Todas las llamadas al mismo servicio ser\u00e1n\u00a0id\u00e9nticas.<\/p>\n<p><a href=\"http:\/\/blog.espol.edu.ec\/taws\/files\/2016\/12\/imagen_sin_estado.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1165\" src=\"http:\/\/blog.espol.edu.ec\/taws\/files\/2016\/12\/imagen_sin_estado.png\" alt=\"imagen_sin_estado\" width=\"453\" height=\"421\" srcset=\"https:\/\/blog.espol.edu.ec\/taws\/files\/2016\/12\/imagen_sin_estado.png 453w, https:\/\/blog.espol.edu.ec\/taws\/files\/2016\/12\/imagen_sin_estado-300x279.png 300w\" sizes=\"auto, (max-width: 453px) 100vw, 453px\" \/><\/a><\/p>\n<p><strong>Cache :<\/strong> El contenido de los servicios web REST se pueden cachear de tal forma que una vez realizada la primera petici\u00f3n al servicio el resto puedan apoyarse en la cache si fuera necesario.<\/p>\n<p><a href=\"http:\/\/blog.espol.edu.ec\/taws\/files\/2016\/12\/imagen_cache.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1166\" src=\"http:\/\/blog.espol.edu.ec\/taws\/files\/2016\/12\/imagen_cache.png\" alt=\"imagen_cache\" width=\"440\" height=\"282\" srcset=\"https:\/\/blog.espol.edu.ec\/taws\/files\/2016\/12\/imagen_cache.png 440w, https:\/\/blog.espol.edu.ec\/taws\/files\/2016\/12\/imagen_cache-300x192.png 300w\" sizes=\"auto, (max-width: 440px) 100vw, 440px\" \/><\/a><\/p>\n<p><strong>Servicios Uniformes :<\/strong>Todos lo servicios REST compartir\u00e1n una forma de invocaci\u00f3n y m\u00e9todos uniforme utilizando los metodos GET,POST,PUT ,DELETE.<\/p>\n<p><strong>Arquitectura en Capas:\u00a0<\/strong>Todos los servicios REST estan orientados hacia la escalabilidad y un cliente REST no ser\u00e1 capaz de distinguir entre si esta realizando una petici\u00f3n directamente al servidor , o se lo esta devolviendo un sistema de caches intermedio o por ejemplo existe un balanceador que se encarga de redirigirlo a otro servidor.<\/p>\n<p><a href=\"http:\/\/blog.espol.edu.ec\/taws\/files\/2016\/12\/imagen_arquitectura_capas.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1167\" src=\"http:\/\/blog.espol.edu.ec\/taws\/files\/2016\/12\/imagen_arquitectura_capas.png\" alt=\"imagen_arquitectura_capas\" width=\"366\" height=\"387\" srcset=\"https:\/\/blog.espol.edu.ec\/taws\/files\/2016\/12\/imagen_arquitectura_capas.png 366w, https:\/\/blog.espol.edu.ec\/taws\/files\/2016\/12\/imagen_arquitectura_capas-284x300.png 284w\" sizes=\"auto, (max-width: 366px) 100vw, 366px\" \/><\/a><\/p>\n<p>&nbsp;<\/p>\n<p>Pero una particular de un servicio rest es que sufre \"amnecia completa\" es decir si un cliente realiza una peticion a un servidor, la proxima vez que el\u00a0 cliente realice la misma peticion el servidor no recordara quien ese cliente y tambien si ese paquete es el mismo.<\/p>\n<p>Afortunadamente Arduino yun tiene ya implementado las dos capas de redes de datos dentro de su infraestructura(Capa de red y de la Capa de enlace de datos), ademas contiene librerias para realizar el levantamiento del servicio.<\/p>\n<p><strong>Configuracion del Arduino Yun<\/strong><\/p>\n<p>1.- Conectar el arduino Yun a la computadora<\/p>\n<p>2.- Se necesita resetear el wifi del arduino Yun. Nos ubicamos en el boton de reset del arduino Yun.<\/p>\n<p><a href=\"http:\/\/blog.espol.edu.ec\/taws\/files\/2016\/12\/Arduino-Yun1-ImagenConfiguracion.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-1168\" src=\"http:\/\/blog.espol.edu.ec\/taws\/files\/2016\/12\/Arduino-Yun1-ImagenConfiguracion.png\" alt=\"arduino-yun1-imagenconfiguracion\" width=\"424\" height=\"323\" srcset=\"https:\/\/blog.espol.edu.ec\/taws\/files\/2016\/12\/Arduino-Yun1-ImagenConfiguracion.png 1024w, https:\/\/blog.espol.edu.ec\/taws\/files\/2016\/12\/Arduino-Yun1-ImagenConfiguracion-300x229.png 300w, https:\/\/blog.espol.edu.ec\/taws\/files\/2016\/12\/Arduino-Yun1-ImagenConfiguracion-768x586.png 768w\" sizes=\"auto, (max-width: 424px) 100vw, 424px\" \/><\/a><\/p>\n<p>&nbsp;<\/p>\n<p>Dejamos presionado el boton de reset de wifi durante 30 segundos. Esto provocara que se reinicie las configuraciones por defecto del Yun.<\/p>\n<p>Debemos tomar en cuenta que el Arduno Y\u00fan tiene un comportamiento similar al de un router WIFI, por lo que cuando lo conectemos no tendremos el WIFI disponible de inmediato, sino que ser\u00e1 necesario esperar al menos un minuto hasta que se habilite la red inal\u00e1mbrica.<\/p>\n<p>Una vez se haya habilitado la red inal\u00e1mbrica, nos vamos las redes inal\u00e1mbricas de Windows, donde veremos disponible una red llamada\u00a0<strong>ArduinoY\u00fan-XXXXXXXXXXX<\/strong>.<\/p>\n<p>Nos conectamos a la red del arduino y en un navegador escribimos arduino.local.<\/p>\n<p>Si al escribir arduino.local te sale un mensaje de error, entonces busca a que ip esta asociada la red del arduino y pegala en el browser y da enter!.<\/p>\n<p>Inmediantamente se te aparecera una pantalla solicitando que ingreses una contrase\u00f1a para entrar a la pantalla de configuraciones(por defecto es \"arduino\").<\/p>\n<p>Si no logras entrar con esa contrase\u00f1a adjunto un programa que deberan cargarlo en el IDE de arduino,ejecutarlo y posteriormente abrir un terminal y debera mostrarse una interfaz como esta.<\/p>\n<p><a href=\"http:\/\/blog.espol.edu.ec\/taws\/files\/2016\/12\/Pantalla_Arduino_yun.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1169\" src=\"http:\/\/blog.espol.edu.ec\/taws\/files\/2016\/12\/Pantalla_Arduino_yun.png\" alt=\"pantalla_arduino_yun\" width=\"635\" height=\"609\" srcset=\"https:\/\/blog.espol.edu.ec\/taws\/files\/2016\/12\/Pantalla_Arduino_yun.png 635w, https:\/\/blog.espol.edu.ec\/taws\/files\/2016\/12\/Pantalla_Arduino_yun-300x288.png 300w\" sizes=\"auto, (max-width: 635px) 100vw, 635px\" \/><\/a><\/p>\n<div class=\"page\" title=\"Page 6\"><\/div>\n<div class=\"page\" title=\"Page 6\"><\/div>\n<div class=\"page\" title=\"Page 6\">A continuacion digita el comando passwd e ingresamos una nueva contrase\u00f1a.<\/div>\n<div class=\"page\" title=\"Page 6\">Posteriormente ingresamos nuevamente a la pagina web de configuracion del arduino yun, ingresando la nueva contrase\u00f1a que hemos reseteado.<\/div>\n<div class=\"page\" title=\"Page 6\"><\/div>\n<div class=\"page\" title=\"Page 6\">Dos puntos claves de este tutorial es configurar la zona horaria, el router que queremos conectarnos y habilitar el servicio rest.<\/div>\n<div class=\"page\" title=\"Page 6\"><a href=\"http:\/\/blog.espol.edu.ec\/taws\/files\/2016\/12\/Pantalla_Configuracion_Servicio_Rest_Arduino_Yun.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-1170\" src=\"http:\/\/blog.espol.edu.ec\/taws\/files\/2016\/12\/Pantalla_Configuracion_Servicio_Rest_Arduino_Yun.png\" alt=\"pantalla_configuracion_servicio_rest_arduino_yun\" width=\"591\" height=\"757\" srcset=\"https:\/\/blog.espol.edu.ec\/taws\/files\/2016\/12\/Pantalla_Configuracion_Servicio_Rest_Arduino_Yun.png 487w, https:\/\/blog.espol.edu.ec\/taws\/files\/2016\/12\/Pantalla_Configuracion_Servicio_Rest_Arduino_Yun-234x300.png 234w\" sizes=\"auto, (max-width: 591px) 100vw, 591px\" \/><\/a><\/div>\n<div class=\"page\" title=\"Page 6\"><\/div>\n<div class=\"page\" title=\"Page 6\">En la\u00a0 casilla de wireless parameter, los parametros ha recordar son la<em><strong> contrase\u00f1a y el nombre de la red(wireless name)<\/strong><\/em>,en la opcion de rest api access debemos seleccionar la casilla Open<\/div>\n<div class=\"page\" title=\"Page 6\"><\/div>\n<div class=\"page\" title=\"Page 6\">Posteriormente debemos dar click en configure and restart.<\/div>\n<div class=\"page\" title=\"Page 6\"><\/div>\n<div class=\"page\" title=\"Page 6\"><strong>Construccion del Hardware<\/strong><\/div>\n<div class=\"page\" title=\"Page 6\"><\/div>\n<div class=\"page\" title=\"Page 6\">Conectamos el pin de salida de 5v de cada modulo al proto (signo +) .<\/div>\n<div class=\"page\" title=\"Page 6\">Conectamos el pin de 5v del arduino yun al proto.<\/div>\n<div class=\"page\" title=\"Page 6\">Las tierras de cada modulo lo conectamos a las tierras del arduino Yun.<\/div>\n<div class=\"page\" title=\"Page 6\">La senal del rele lo conectamos al pin 8 del arduino Yun.<\/div>\n<div class=\"page\" title=\"Page 6\">El sensor de corriente tiene una salida analoga, de modo que lo conectamos al Pin A0 del arduino Yun<\/div>\n<div class=\"page\" title=\"Page 6\"><\/div>\n<div class=\"page\" title=\"Page 6\">Procedemos a conectar las patas del enchufle al proyecto, una pata ira al sensor de corriente y la otra pata al rele.<\/div>\n<div class=\"page\" title=\"Page 6\">De igual manera hacemos para el foco.<\/div>\n<div class=\"page\" title=\"Page 6\"><em><strong>NOTA El cable que representa la parte negativa va conectado al sensor de corriente y el que representa la parte positiva va conectado al rele.<\/strong><\/em><\/div>\n<div class=\"page\" title=\"Page 6\"><\/div>\n<div class=\"page\" title=\"Page 6\"><strong>Codificacion en el IDE de Arduino<\/strong><\/div>\n<div class=\"page\" title=\"Page 6\"><\/div>\n<div class=\"page\" title=\"Page 6\">#include &lt;Bridge.h&gt;<\/div>\n<div class=\"page\" title=\"Page 6\">\n#include &lt;Process.h&gt;<br \/>\n#include &lt;BridgeServer.h&gt;<br \/>\n#include &lt;BridgeClient.h&gt;<\/div>\n<div class=\"page\" title=\"Page 6\"><\/div>\n<div class=\"page\" title=\"Page 6\">\nvoid setup() {<br \/>\nBridge.begin();<br \/>\ntime = millis();<br \/>\n\/\/ For debugging, wait until the serial console is connected<br \/>\nwhile(!Serial);<br \/>\nSerial.begin(9600);<br \/>\nif (!date.running()){<br \/>\ndate.begin(\"date\");<br \/>\ndate.addParameter(\"+%T\");<br \/>\ndate.run();<br \/>\n}<br \/>\npinMode(RELAY_PIN,OUTPUT);<br \/>\nserver.listenOnLocalhost();<br \/>\nserver.begin();<\/div>\n<div class=\"page\" title=\"Page 6\">}<\/div>\n<div class=\"page\" title=\"Page 6\"><\/div>\n<div class=\"page\" title=\"Page 6\"><\/div>\n<div class=\"page\" title=\"Page 6\">\n<p>void loop() {<\/p>\n<p>BridgeClient client = server.accept();<br \/>\nif (client) {<br \/>\n\/\/ Process request<br \/>\nprocess(client);<\/p>\n<p>\/\/ Close connection and free resources.<br \/>\nclient.stop();<br \/>\n}<\/p><\/div>\n<div class=\"page\" title=\"Page 6\"><\/div>\n<div class=\"page\" title=\"Page 6\">}<\/div>\n<div class=\"page\" title=\"Page 6\"><\/div>\n<div class=\"page\" title=\"Page 6\"><\/div>\n<div class=\"page\" title=\"Page 6\">\nvoid process(BridgeClient client) {<br \/>\n\/\/ read the command<br \/>\nString command = client.readStringUntil('\/');<\/p>\n<p>\/\/ is \"digital\" command?<br \/>\nif (command == \"digital\") {<br \/>\ndigitalCommand(client);<br \/>\n}<\/p>\n<p>\/\/ is \"analog\" command?<br \/>\nif (command == \"analog\") {<br \/>\nanalogCommand(client);<br \/>\n}<\/p>\n<p>\/\/ is \"mode\" command?<br \/>\nif (command == \"mode\") {<br \/>\nmodeCommand(client);<br \/>\n}<br \/>\n}<\/p><\/div>\n<div class=\"page\" title=\"Page 6\"><\/div>\n<div class=\"page\" title=\"Page 6\"><\/div>\n<div class=\"page\" title=\"Page 6\">\nvoid digitalCommand(BridgeClient client) {<br \/>\nint pin, value;<\/p>\n<p>\/\/ Read pin number<br \/>\npin = client.parseInt();<\/p>\n<p>\/\/ If the next character is a '\/' it means we have an URL<br \/>\n\/\/ with a value like: \"\/digital\/13\/1\"<br \/>\nif (client.read() == '\/') {<br \/>\nvalue = client.parseInt();<br \/>\ndigitalWrite(pin, value);<br \/>\n}<br \/>\nelse {<br \/>\nvalue = digitalRead(pin);<br \/>\n}<\/p>\n<p>\/\/ Send feedback to client<br \/>\nclient.print(F(\"Pin D\"));<br \/>\nclient.print(pin);<br \/>\nclient.print(F(\" set to \"));<br \/>\nclient.println(value);<\/p>\n<p>\/\/ Update datastore key with the current pin value<br \/>\nString key = \"D\";<br \/>\nkey += pin;<br \/>\nBridge.put(key, String(value));<br \/>\n}<\/p><\/div>\n<div class=\"page\" title=\"Page 6\"><\/div>\n<div class=\"page\" title=\"Page 6\">\nvoid analogCommand(BridgeClient client) {<br \/>\nint pin, value;<\/p>\n<p>\/\/ Read pin number<br \/>\npin = client.parseInt();<\/p>\n<p>\/\/ If the next character is a '\/' it means we have an URL<br \/>\n\/\/ with a value like: \"\/analog\/5\/120\"<br \/>\nif (client.read() == '\/') {<br \/>\n\/\/ Read value and execute command<br \/>\nvalue = client.parseInt();<br \/>\nanalogWrite(pin, value);<\/p>\n<p>\/\/ Send feedback to client<br \/>\nclient.print(F(\"Pin D\"));<br \/>\nclient.print(pin);<br \/>\nclient.print(F(\" set to analog \"));<br \/>\nclient.println(value);<\/p>\n<p>\/\/ Update datastore key with the current pin value<br \/>\nString key = \"D\";<br \/>\nkey += pin;<br \/>\nBridge.put(key, String(value));<br \/>\n}<br \/>\nelse {<br \/>\n\/\/ Read analog pin<br \/>\nvalue = analogRead(pin);<\/p>\n<p>\/\/ Send feedback to client<br \/>\nclient.print(F(\"Pin A\"));<br \/>\nclient.print(pin);<br \/>\nclient.print(F(\" reads analog \"));<br \/>\nclient.println(value);<\/p>\n<p>\/\/ Update datastore key with the current pin value<br \/>\nString key = \"A\";<br \/>\nkey += pin;<br \/>\nBridge.put(key, String(value));<br \/>\n}<br \/>\nreturn ;<br \/>\n}<\/p>\n<p>void modeCommand(BridgeClient client) {<br \/>\nint pin;<\/p>\n<p>\/\/ Read pin number<br \/>\npin = client.parseInt();<\/p>\n<p>\/\/ If the next character is not a '\/' we have a malformed URL<br \/>\nif (client.read() != '\/') {<br \/>\nclient.println(F(\"error\"));<br \/>\nreturn;<br \/>\n}<\/p>\n<p>String mode = client.readStringUntil('\\r');<\/p>\n<p>if (mode == \"input\") {<br \/>\npinMode(pin, INPUT);<br \/>\n\/\/ Send feedback to client<br \/>\nclient.print(F(\"Pin D\"));<br \/>\nclient.print(pin);<br \/>\nclient.print(F(\" configured as INPUT!\"));<br \/>\nreturn;<br \/>\n}<\/p>\n<p>if (mode == \"output\") {<br \/>\npinMode(pin, OUTPUT);<br \/>\n\/\/ Send feedback to client<br \/>\nclient.print(F(\"Pin D\"));<br \/>\nclient.print(pin);<br \/>\nclient.print(F(\" configured as OUTPUT!\"));<br \/>\nreturn;<br \/>\n}<\/p>\n<p>client.print(F(\"error: invalid mode \"));<br \/>\nclient.print(mode);<br \/>\n}<\/p><\/div>\n<div class=\"page\" title=\"Page 6\"><\/div>\n<div class=\"page\" title=\"Page 6\"><strong>Desarrollo de una pagina Web<\/strong><\/div>\n<div class=\"page\" title=\"Page 6\"><\/div>\n<div class=\"page\" title=\"Page 6\">Pagina Html<\/div>\n<div class=\"page\" title=\"Page 6\">&lt;!DOCTYPE html&gt;<br \/>\n&lt;html&gt;<br \/>\n&lt;head&gt;<br \/>\n&lt;meta charset=\"utf-8\"&gt;<br \/>\n&lt;script type=\"text\/javascript\" src=\"script-arduino.js\"&gt;&lt;\/script&gt;<br \/>\n&lt;script type=\"text\/javascript\" src=\"jquery-3.1.1.min.js\"&gt;&lt;\/script&gt;<br \/>\n&lt;link rel=\"stylesheet\" type=\"text\/css\" href=\"style.css\"&gt;<br \/>\n&lt;title&gt;Control_Remoto-Luz&lt;\/title&gt;<br \/>\n&lt;\/head&gt;<br \/>\n&lt;body&gt;<br \/>\n&lt;h1&gt;<br \/>\nControl Remoto de Luz<br \/>\n&lt;\/h1&gt;<br \/>\n&lt;form\u00a0 id=\"relay\" method=\"GET\" accept-charset=\"utf-8\"&gt;<br \/>\n&lt;input type=\"button\" name=\"\" value=\"On\" id=\"on\" class=\"commandButton\" onclick=\"relayOn()\" \/&gt;<br \/>\n&lt;input type=\"button\" name=\"\" value=\"Off\" id=\"off\" class=\"commandButton\" onclick=\"relayOff()\" \/&gt;<br \/>\n&lt;\/form&gt;<\/p>\n<p>&lt;\/body&gt;<\/p>\n<p>&lt;\/html&gt;<\/p><\/div>\n<div class=\"page\" title=\"Page 6\"><\/div>\n<div class=\"page\" title=\"Page 6\"><strong>Scrip_arduino.js<\/strong><\/div>\n<div class=\"page\" title=\"Page 6\"><\/div>\n<div class=\"page\" title=\"Page 6\">function relayOn() {<br \/>\n$.get(\"update_state.php\",{command:1});<br \/>\n}<\/p>\n<p>function relayOff(){<br \/>\n$.get(\"update_state.php\",{command:0});<\/p>\n<p>}<\/p><\/div>\n<div class=\"page\" title=\"Page 6\"><\/div>\n<div class=\"page\" title=\"Page 6\"><strong>Update_state.php<\/strong><\/div>\n<div class=\"page\" title=\"Page 6\"><\/div>\n<div class=\"page\" title=\"Page 6\">&lt;?php<\/p>\n<p>\/\/ Create cURL call, make sure to change it with your Yun name<br \/>\n$service_url = 'http:\/\/kevinleonelgrupo1.local\/arduino\/digital\/8\/' . $_GET[\"command\"];<br \/>\n$curl = curl_init($service_url);<\/p>\n<p>\/\/ Send cURL to Yun board<br \/>\ncurl_setopt($curl, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4 );<br \/>\n$curl_response = curl_exec($curl);<br \/>\ncurl_close($curl);<\/p>\n<p>?&gt;<\/p><\/div>\n<div class=\"page\" title=\"Page 6\"><\/div>\n<div class=\"page\" title=\"Page 6\"><em><strong>Nota la aplicacion web debe ejecutarse en un servidor !!!<\/strong><\/em><\/div>\n<div class=\"page\" title=\"Page 6\"><\/div>\n<div class=\"page\" title=\"Page 6\"><a href=\"http:\/\/blog.espol.edu.ec\/taws\/files\/2016\/12\/Aplicacion_control_remoto_arduino.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1171\" src=\"http:\/\/blog.espol.edu.ec\/taws\/files\/2016\/12\/Aplicacion_control_remoto_arduino.png\" alt=\"aplicacion_control_remoto_arduino\" width=\"350\" height=\"240\" srcset=\"https:\/\/blog.espol.edu.ec\/taws\/files\/2016\/12\/Aplicacion_control_remoto_arduino.png 350w, https:\/\/blog.espol.edu.ec\/taws\/files\/2016\/12\/Aplicacion_control_remoto_arduino-300x206.png 300w\" sizes=\"auto, (max-width: 350px) 100vw, 350px\" \/><\/a><\/div>\n<div class=\"page\" title=\"Page 6\"><\/div>\n<div class=\"page\" title=\"Page 6\"><a href=\"http:\/\/blog.espol.edu.ec\/taws\/files\/2016\/12\/Encendido_de_Luz.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1172\" src=\"http:\/\/blog.espol.edu.ec\/taws\/files\/2016\/12\/Encendido_de_Luz.png\" alt=\"encendido_de_luz\" width=\"351\" height=\"195\" srcset=\"https:\/\/blog.espol.edu.ec\/taws\/files\/2016\/12\/Encendido_de_Luz.png 351w, https:\/\/blog.espol.edu.ec\/taws\/files\/2016\/12\/Encendido_de_Luz-300x167.png 300w\" sizes=\"auto, (max-width: 351px) 100vw, 351px\" \/><\/a><\/div>\n<div class=\"page\" title=\"Page 6\"><\/div>\n","protected":false},"excerpt":{"rendered":"<p>Introduccion Actualmente el Iot(internet of thing) es una tendencia en el mundo que va creciendo cada dias mas, sin duda comenzar a experimentar con peque\u00f1os proyectos nos brinda la oportunidad de conocer\u00a0 lo importante y critico que resulta el desarrollo de aplicaciones que controlen aparatos electricos. Desarrollo Voy a mostrar en este tutorial como encender [&hellip;]<\/p>\n","protected":false},"author":9993,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[15],"tags":[],"class_list":["post-1160","post","type-post","status-publish","format-standard","hentry","category-web"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/blog.espol.edu.ec\/taws\/wp-json\/wp\/v2\/posts\/1160","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.espol.edu.ec\/taws\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.espol.edu.ec\/taws\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/taws\/wp-json\/wp\/v2\/users\/9993"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/taws\/wp-json\/wp\/v2\/comments?post=1160"}],"version-history":[{"count":2,"href":"https:\/\/blog.espol.edu.ec\/taws\/wp-json\/wp\/v2\/posts\/1160\/revisions"}],"predecessor-version":[{"id":1174,"href":"https:\/\/blog.espol.edu.ec\/taws\/wp-json\/wp\/v2\/posts\/1160\/revisions\/1174"}],"wp:attachment":[{"href":"https:\/\/blog.espol.edu.ec\/taws\/wp-json\/wp\/v2\/media?parent=1160"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/taws\/wp-json\/wp\/v2\/categories?post=1160"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/taws\/wp-json\/wp\/v2\/tags?post=1160"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}