Buenas noches colegas
Hace un tiempo que he desarrollado este proyecto de "control de cosas" por internet (IOT) y tengo claro que hay mucha info en la red, y gran variedad de aplicaciones que transforman cualquier cosa doméstica, hasta un inodoro en inteligente(?) y accesible desde la nube.
Esto es por que la llamada Domótica o IoT está muy de moda en estos días y claramente se impondrá globalmente tarde o temprano.
Yo arranco aquí desde un desarrollo simple y básico, usando el hardware que tengo disponible en el cajón, que luego se puede ampliar y sofisticar como se quiera, .
Los pasos a seguir en mi caso serán:
1) Armar un plaqueta con uC (microcontrolador) que maneje unos relés para encender y apagar luces u otros dispositivos, en principio 4.
Y además el uC correrá un código que como veremos será una especie de servidor de pagina web en lenguaje HTML muy básico
2) El uC manejará el encendido y apagado de los relés por medio de comandos (strings) seriales simples recibidos en su USART, por ejemplo "ONN1" (encender luz 1), "OFF3" (apagar luz 3), embebidos estos en lenguaje HTML, y también contestará el estado de los relés en lenguaje HTML para que el cliente remoto se entere del éxito del comando enviado a través de la nube.
3) El uC recibirá dichos comandos seriales desde una placa conversora ethernet _ serial, en mi caso será una WIZ108SR, que como dije la ya tenía en algún cajón de mi humilde laboratorio y la aprovecho para esto, pero con otros modelos similares de interfaces también podrá funcionar el proyecto.
Las características de esta placa WIZNET pueden verse aquí:
Esta placa que uso porque la tengo disponible tiene dos problemitas perfectamente salvables, tiene que ser alimentada con 3,3V y sus señales seriales serán de 3,3V siendo el uC de 5V, y además su interface serial es norma RS422/RS485 3,3V mientras que en el uC, su USART es norma RS232 de 5V . Una circuitería adaptadora muy simple que luego veremos salvará este problema.
Como veremos luego en detalle en su configuración, la WIZ108SR es muy versátil y puede configurarse en su lado ethernet TCP/IP como Servidor, Cliente o Mixta, y en su lado serial con distintas velocidades y formatos de datos que se adaptarán a la USART del uC.
Como ya adelanté, este proyecto usará la modalidad Cliente-Servidor, donde el conjunto WIZ-uC actuará como Servidor y la aplicación remota desde PC o teléfono móvil que nos permitirá finalmente prender u apagar luces en casa, será el cliente.
A la WIZ en su lado TCP/IP le asignaremos un número IP fijo dentro de nuestra red hogareña (LAN), por ejemplo si el modem/router de casa tiene número de red 192.168.1.1, a la WIZ le pondremos por ejemplo 192.168.1.108
4) Abriendo puertos y configurando DNS dinámica en nuestro router
Nuestro router doméstico nos protege de ingresos no deseados a nuestra red doméstica, pero en algunos casos es necesario que aplicaciones clientes externas alcancen algunos dispositivos en dentro de nuestra LAN con conexiones TCP/IP entrantes, como es el caso de cámaras de vigilancia, dispositivos IoT, servidores de página, etc.
Y como ya vamos viendo, la placa WIZ y el uC en este proyecto actuarán como un simple conjunto servidor de página con la función física Ppal. de manejar relés y los dispositivos cableados a estos.
Entonces para que la conexión entrante de nuestra App cliente remota alcance la WIZ y el uC deberemos abrir los puertos correspondientes en nuestro router doméstico.
Como ya dijimos los mensajes de comando y respuesta estarán embebidos en lenguaje HTML, por lo cual el puerto a abrir para que estos circulen será el 80 (HTML), y esto también asegurará que los comandos viajen sin tropiezos en la nube pues los mensajes HTML son los más comunes de paginas Web y todo enrutador o enlace en la red los dejará pasar.
Esta configuración que veremos luego en detalle en mi router Encore se llama Virtual Server, en otros LAN Routing, etc. dependiendo de marcas y modelos.
Por otro lado, normalmente nuestro router doméstico tendrá asignada una dirección TCP/IP pública dinámica (variable) del lado WAN en la WEB, que es asignada por nuestro ISP (Internet Service Provider) dentro de un rango de direcciones públicas, a no ser que algún usuario pudiente pueda pagar por un número de IP público fijo (no es mi caso ni mi interés)
Este problemita de tener un número de IP público variable que no nos permite acceder libremente como un nombre o dominio de Internet, desde la Web a nuestro router de casa, lo vienen a salvar los servidores de sistema dinámico de nombres de dominio ó servidores DDNS
Los servicios DDNS mas difundidos son DynDNS, NO-IP y otros, y la mayoría por suerte proveen uno o dos nombres de dominio gratuitos.
Entonces simplemente abrimos y registramos una cuenta con usuario y password en uno de estos servicios que vienen en nuestro auxilio, seleccionamos un nombre de dominio de nuestro gusto, por ejemplo "laslucesdemicasa.ddns.net", claramente con un dominio así cualquier jacker interesado podrá intuir para que sirve el sitio, pero para que quede claro en principio usaremos este , luego se puede elegir alguno no tan explícito.
Entonces una vez que tenemos esta cuenta activada en el DDNS, configuraremos sus datos en la parte WAN/DDNS de nuestro router doméstico, luego mostraré como es esto en mi ENCORE.
5) Enviando comandos desde nuestro cliente remoto.
Una vez logrados estos pasos con éxito, y con el código correspondiente corriendo en el uC, simplemente escribiremos en cualquier navegador de PC en cualquier parte del mundo con acceso a Internet, nuestro nombre de dominio seguido del comando deseado, por ejemplo:
www.laslucesdemicasa.ddns.net/ONN1, y la luz, reflector de patio trasero, u otro dispositivo manejado por el relé número 1 en la placa uC (casi mágicamente) se encenderá , y recibiremos a vuelta de mensaje la confirmación correspondiente de su encendido, y si tenemos alguna cámara de vigilancia doméstica por allí lo verificaremos.
Luego con el comando www.laslucesdemicasa.ddns.net/OFF1 , dicha luz (nuevamente casi mágicamente) se apagará, y recibiremos a vuelta de mensaje nuevamente la confirmación correspondiente.
Como pueden ver está será una manera muy simple y también muy vulnerable de manejar dispositivos eléctricos en nuestra casa u otro sitio, pero que luego podremos complicar o proteger en distintas formas, paswords, comandos codificados, etc.
6) Por último desarrollaremos una App en Android para móvil específica para este proyecto para ya no usar un navegador Web, utilizando para esto la plataforma para principiantes (yo soy uno de ellos) del MIT App Inventor, muy amigable y sencilla de usar.
Bueno, como introducción se ha hecho larga, luego en siguientes posteos veremos cada punto en detalle.
Espero sea un tema de vuestro interés, cualquier comentario o sugerencia como siempre bienvenido.
Saludos
Hace un tiempo que he desarrollado este proyecto de "control de cosas" por internet (IOT) y tengo claro que hay mucha info en la red, y gran variedad de aplicaciones que transforman cualquier cosa doméstica, hasta un inodoro en inteligente(?) y accesible desde la nube.
Esto es por que la llamada Domótica o IoT está muy de moda en estos días y claramente se impondrá globalmente tarde o temprano.
Yo arranco aquí desde un desarrollo simple y básico, usando el hardware que tengo disponible en el cajón, que luego se puede ampliar y sofisticar como se quiera, .
Los pasos a seguir en mi caso serán:
1) Armar un plaqueta con uC (microcontrolador) que maneje unos relés para encender y apagar luces u otros dispositivos, en principio 4.
Y además el uC correrá un código que como veremos será una especie de servidor de pagina web en lenguaje HTML muy básico
2) El uC manejará el encendido y apagado de los relés por medio de comandos (strings) seriales simples recibidos en su USART, por ejemplo "ONN1" (encender luz 1), "OFF3" (apagar luz 3), embebidos estos en lenguaje HTML, y también contestará el estado de los relés en lenguaje HTML para que el cliente remoto se entere del éxito del comando enviado a través de la nube.
3) El uC recibirá dichos comandos seriales desde una placa conversora ethernet _ serial, en mi caso será una WIZ108SR, que como dije la ya tenía en algún cajón de mi humilde laboratorio y la aprovecho para esto, pero con otros modelos similares de interfaces también podrá funcionar el proyecto.
Las características de esta placa WIZNET pueden verse aquí:
Esta placa que uso porque la tengo disponible tiene dos problemitas perfectamente salvables, tiene que ser alimentada con 3,3V y sus señales seriales serán de 3,3V siendo el uC de 5V, y además su interface serial es norma RS422/RS485 3,3V mientras que en el uC, su USART es norma RS232 de 5V . Una circuitería adaptadora muy simple que luego veremos salvará este problema.
Como veremos luego en detalle en su configuración, la WIZ108SR es muy versátil y puede configurarse en su lado ethernet TCP/IP como Servidor, Cliente o Mixta, y en su lado serial con distintas velocidades y formatos de datos que se adaptarán a la USART del uC.
Como ya adelanté, este proyecto usará la modalidad Cliente-Servidor, donde el conjunto WIZ-uC actuará como Servidor y la aplicación remota desde PC o teléfono móvil que nos permitirá finalmente prender u apagar luces en casa, será el cliente.
A la WIZ en su lado TCP/IP le asignaremos un número IP fijo dentro de nuestra red hogareña (LAN), por ejemplo si el modem/router de casa tiene número de red 192.168.1.1, a la WIZ le pondremos por ejemplo 192.168.1.108
4) Abriendo puertos y configurando DNS dinámica en nuestro router
Nuestro router doméstico nos protege de ingresos no deseados a nuestra red doméstica, pero en algunos casos es necesario que aplicaciones clientes externas alcancen algunos dispositivos en dentro de nuestra LAN con conexiones TCP/IP entrantes, como es el caso de cámaras de vigilancia, dispositivos IoT, servidores de página, etc.
Y como ya vamos viendo, la placa WIZ y el uC en este proyecto actuarán como un simple conjunto servidor de página con la función física Ppal. de manejar relés y los dispositivos cableados a estos.
Entonces para que la conexión entrante de nuestra App cliente remota alcance la WIZ y el uC deberemos abrir los puertos correspondientes en nuestro router doméstico.
Como ya dijimos los mensajes de comando y respuesta estarán embebidos en lenguaje HTML, por lo cual el puerto a abrir para que estos circulen será el 80 (HTML), y esto también asegurará que los comandos viajen sin tropiezos en la nube pues los mensajes HTML son los más comunes de paginas Web y todo enrutador o enlace en la red los dejará pasar.
Esta configuración que veremos luego en detalle en mi router Encore se llama Virtual Server, en otros LAN Routing, etc. dependiendo de marcas y modelos.
Por otro lado, normalmente nuestro router doméstico tendrá asignada una dirección TCP/IP pública dinámica (variable) del lado WAN en la WEB, que es asignada por nuestro ISP (Internet Service Provider) dentro de un rango de direcciones públicas, a no ser que algún usuario pudiente pueda pagar por un número de IP público fijo (no es mi caso ni mi interés)
Este problemita de tener un número de IP público variable que no nos permite acceder libremente como un nombre o dominio de Internet, desde la Web a nuestro router de casa, lo vienen a salvar los servidores de sistema dinámico de nombres de dominio ó servidores DDNS
Los servicios DDNS mas difundidos son DynDNS, NO-IP y otros, y la mayoría por suerte proveen uno o dos nombres de dominio gratuitos.
Entonces simplemente abrimos y registramos una cuenta con usuario y password en uno de estos servicios que vienen en nuestro auxilio, seleccionamos un nombre de dominio de nuestro gusto, por ejemplo "laslucesdemicasa.ddns.net", claramente con un dominio así cualquier jacker interesado podrá intuir para que sirve el sitio, pero para que quede claro en principio usaremos este , luego se puede elegir alguno no tan explícito.
Entonces una vez que tenemos esta cuenta activada en el DDNS, configuraremos sus datos en la parte WAN/DDNS de nuestro router doméstico, luego mostraré como es esto en mi ENCORE.
5) Enviando comandos desde nuestro cliente remoto.
Una vez logrados estos pasos con éxito, y con el código correspondiente corriendo en el uC, simplemente escribiremos en cualquier navegador de PC en cualquier parte del mundo con acceso a Internet, nuestro nombre de dominio seguido del comando deseado, por ejemplo:
www.laslucesdemicasa.ddns.net/ONN1, y la luz, reflector de patio trasero, u otro dispositivo manejado por el relé número 1 en la placa uC (casi mágicamente) se encenderá , y recibiremos a vuelta de mensaje la confirmación correspondiente de su encendido, y si tenemos alguna cámara de vigilancia doméstica por allí lo verificaremos.
Luego con el comando www.laslucesdemicasa.ddns.net/OFF1 , dicha luz (nuevamente casi mágicamente) se apagará, y recibiremos a vuelta de mensaje nuevamente la confirmación correspondiente.
Como pueden ver está será una manera muy simple y también muy vulnerable de manejar dispositivos eléctricos en nuestra casa u otro sitio, pero que luego podremos complicar o proteger en distintas formas, paswords, comandos codificados, etc.
6) Por último desarrollaremos una App en Android para móvil específica para este proyecto para ya no usar un navegador Web, utilizando para esto la plataforma para principiantes (yo soy uno de ellos) del MIT App Inventor, muy amigable y sencilla de usar.
Bueno, como introducción se ha hecho larga, luego en siguientes posteos veremos cada punto en detalle.
Espero sea un tema de vuestro interés, cualquier comentario o sugerencia como siempre bienvenido.
Saludos
Última edición: