Introducción (un poco larga) Buenas noches colegas
Hace tiempo que ando dando vueltas con algún proyecto en este tema 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 porque que la llamada Domótica o IoT (Internet de las cosas) está muy de moda en estos dias y claramente se impondrá globalmente tarde o temprano.
Yo arranco aquí desde un desarrolo simple y básico, usando el hardware que tengo disponible en el cajón, que luego se puede ampliar y sofisticar como se quiera,
y en este ya he efectuado algunas pruebas satisfactorias.
Los pasos a seguir en mi caso serán:
1) Armar un plaqueta con PIC que maneje unos relés para encender y apagar luces u otros dispositivos, en principio 4.
Y además correrá un código que como veremos será una especie de servidor de pagina web en lenguaje HTML muy básico
2) El PIC 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 exito del comando enviado a través de la nube.
3) El PIC recibirá dichos comandos seriales desde una placa conversora ethernet _ serial, en mi caso una WIZ108SR, que como dije la ya tenía en algún cajón de mi humilde laboratorio y la aprovecho, pero con otros modelos similares de interfaces también podrá funcionar el proyecto.
Las carácteristicas de esta placa WIZ pueden verse aquí:
https://www.wiznet.io/product-item/wiz108sr/Esta placa que uso porque 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 PIC de 5V, y además su interface serial es norma RS422/RS485 3,3V mientras que en el PIC su USART es norma RS232 de 5V . Una circuiteria adaptadora muy simple que luego veremos salvará este problema.
Como veremos luego en detalle en su configuración, la WIZ108SR es muy versatil 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 PIC.
Como ya adelanté, este proyecto usará la modalidad Cliente-Servidor, donde el conjunto WIZ-PIC actuará como Servidor y la aplicación remota desde PC o teléfono movil 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 PIC 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 en consecuencia dispositivos
Entonces para que la conexión entrante de nuestra App cliente remota alcance la WIZ y el PIC deberemos abrir los puertos correspondientes en nuestro router doméstico. Como los mensajes de comando y respuesta estarán embebidos en lenguaje HTML, el puerto a abrir será el 80, y esto también asegurará que los comandos viajen sin escollos en la WEB 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 PIC, 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 PIC (casi magicamente) 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 magicamente) se apagará, y recibiremos a vuelta de mensaje nuevamente la confirmación correspondiente.
Como pueden ver está será una manera muy simple y tambíé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 movil 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