2006/02/21

Manejar aparatos eléctricos desde el PC: domótica (2/5) 

Para poder controlar el módulo por software se me planteaba una duda, ¿cómo hacer para que varios programas accediesen a este?. Todos tenían que ser ejecutables y ser lanzados con el Port Talk, sin embargo no era lo más optimo porque no había manera de saber que aparatos estaban encendidos y cuales no, además de que mi interés era controlar los aparatos no solo desde el propio ordenador donde estaba conectado el módulo, sino también a través de otros dispositivos.

La solución se mostraba por sí sola: solo un programa accedería al módulo y los demás deberían comunicarse con este para lanzarle las peticiones y recibir el estado actual en que se encontraban los aparatos. De ahí salió el programa Luces, el cual era un simple servidor tcp que escuchaba por el puerto 1976 (mi año de nacimiento) y se comunicaba con sus clientes mediante un sencillo protocolo basado en números (al estilo del protocolo simple de transferencia de correo - SMTP). Los códigos que devuelve el servidor son los siguientes:

100Saludo al nuevo cliente conectado
101Estado en que se encuentran los aparatos (máscara)
200Usuario introducido
201Contraseña introducida
202Permitir o denegar peticiones, cerrar programa o apagar equipo
300Estado no identificado
301Comando no reconocido
302Fallo en la autentificación


Por su parte el cliente envia los siguientes comandos (en mayúsculas o en minúsculas):

USER:<usuario>Usuario a validar
PASS:<contraseña>Contraseña a validar
<Número>Estado que se quiere aplicar a los aparatos (máscara)
OPENPermite a los usuarios no administradores manejar los aparatos
CLOSEDeniega a los usuarios no administradores manejar los aparatos
QUITCierra la aplicación
BYEApaga el equipo


En primer lugar el orden que se debe seguir es:

Servidor: Mensaje de Saludo.
Cliente: Enviar USER: y el nombre de usuario.
Servidor: Mensaje de Usuario Introducido.
Cliente: Enviar PASS: y la contraseña del usuario.
Servidor: Mensaje de Contraseña Introducida.



En segundo lugar cuando el usuario ya esta validado puede introducir o bién los comandos OPEN, CLOSE, QUIT y BYE; o bién un número de 0 a 15 que actuaría como máscara para encender o apagar los aparatos (si el número es mayor que 15 se usa el módulo de 16).

Haciendo un telnet, lo anterior comentado se vería de la siguiente forma:


Y en la aplicación Luces se vería así:


Si ahora cometemos un error (por ejemplo metemos mal el usuario) el resultado quedaría así:



Como se puede observar, la segunda conexión la he hecho a través de otro ordenador. Gracias a que se usa el protocolo el tcp/ip se puede conectar desde cualquier programa (independientemente del sistema operativo, arquitectura de ordenador, etc).

Por otro lado el sistema se basa en una base de datos para gestionar los usuarios, los eventos y los aparatos:



En mi caso usé una base de datos access, pero como es lógico pensar, se puede usar cualquier tipo de base de datos relacional. Las tablas son sólo 4 y se detallan a continuación:

tblUsuariosDonde se almacenan los usuarios del sistema y sus permisos
intIDAutonúmerico (o secuencia) que identifica al usuario inequivocamente
strNombreNombre del usuario
strApellidosApellido o apellidos del usuario
strLoginIdentificador del usuario para validarse en el sistema
strPasswordContraseña del usuario para validarse en el sistema
blnActivoBandera que indica si un usuario puede validarse en el sistema o no
bytNivelNivel del usuario (100 administrador, 50 usuario normal, 0 visitante)
bytMascaraMáscara de permiso para aparatos: Si el usuario tiene por ejemplo 10 (1010 en binario) sólo puede utilizar los aparatos 2 y 4, en cambio los aparatos 1 y 3 únicamente puede ver su estado


tblAccionesDonde se almacenan las distintas acciones del usuario
bytIDAutonúmerico (o secuencia) que identifica la acción inequivocamente
strAccionNombre de la acción (Usuario Validado, Usuario Desconectado, Orden y Comando)


tblLogDonde se almacena la actividad que lleva a cabo el usuario
intIDAutonúmerico (o secuencia) que identifica la acción del usuario
intUsuarioCampo relacionado con el intID de la tabla tblUsuarios
bytAccionCampo relacionado con el bytID de la tabla tblAcciones
datFechaFecha y hora de la acción
strIPIP de la máquina donde se ordenó la acción
strDescripcionDescripción de la acción


tblAparatosDonde se almacenan los nombres de los aparatos a manejar
intIDAutonúmerico (o secuencia) que identifica el aparato inequivocamente
strNombreNombre del aparato


Manejar aparatos eléctricos desde el PC: domótica (1/5) Manejar aparatos eléctricos desde el PC: domótica (3/5)

Comentarios:
hola, mi nombre es carlos, soy asesor tecnico de un fabricante de domótica y estoy buscando alguien que me realice un software para el control del sistema bajo pc, ponte en contacto conmigo si quieres.
carlos@domoinstal.com
Gracias.
 
Buen trabajo.
Saludos
Domodesk.com
 
muy buen blog
soy de argentina y me interesaria contactarme con usted.
le dejo mi mail
2006ProyectoTIC@hotmail.com
 
perdon, el mail es 2006proyectotic@gmail.com
 
Hola soy estudiante de ultimo curso de Ing. Telecom. y me ha gustado mucho tu documento sobre la domotización, sobretodo, me ha gustado mucho el usar un telefono movil como un periférico del ordenador, creo que habría multitud de aplicaciones prácticas, mi problema consiste en que no consigo encontrar información para conectar usar las interfaces de cmandos de los teléfonos ni de sus aplicaciones, y he visto que tu has conseguido unar un siemens a traves del puerto serie, bien yo pretengo acceder a un nokia 3200 a traves del puerto de infrarojos, me podrias guiar en esta tarea porfavor?.

Mi direccion de contacto es:
enriquejustos@gmail.com

muchas gracias por tu tiempo
 
Pues para ello necesitarías trabajar con el protocolo IrDA, pero yo no se como funciona por lo que no te puedo ayudar, lo siento.
 
Publicar un comentario en la entrada

This page is powered by Blogger. Isn't yours?