-[ 0x0D ]-------------------------------------------------------------------- -[ EDIFICIOS INTELIGENTES ]-------------------------------------------------- -[ by FCA0000 ]-------------------------------------------------------SET-18- Bueno, pues como l@s chic@s de SET pedian algun articulo sobre el apasionante tema de la Inteligencia Artificial, pues me he decidido y voy a contar unas cuantas cosas sobre teoria y una aplicacion practica: Edificios Inteligentes Lo primero que se cuenta cuando se habla sobre IA es la eterna pregunta ?que es inteligencia? Esto esto me parece una tonteria y no voy a entrar en el rollo filosofico. Pero la IA es la manera de preparar un proceso para que una maquina sea capaz de optimizarlo y ejecutarlo. Esta es la parte graciosa: hacer que el programa (o lo que sea) aprenda de resultados anteriores. Para esto se usa un soporte matematico basado en -Calculo / Analisis numerico -Logica -Estadistica / Investigacion Operativa conocimientos que se obtienen estudiando la carrera de Ciencias Exactas, tal como el autor (yo) hizo. Por encima de esto hay implementaciones (a veces tambien teoricas y no practicas) orientadas a dar una solucion, tales como -Teoria de grafos -Algoritmos de busqueda -Logica difusa -Redes neuronales (o redes neuroticas :-) -Sistemas expertos -Algoritmos geneticos -Metodos de Runge-Kutta -Redes de pesos activos -Backtracing -y 1000 mas. Con esto quiero decir que la IA es algo parecido a la musica: existen muchos estilos diferentes, y cada uno sirve para una cosa. Te pueden gustar varios, aunque en general cada problema ya indica su resolucion. Y para no acabar aqui el articulo, voy a poner un caso practico. Los llamados Edificios Inteligentes consisten en una supraestructura que da un valor a~adido a la infraestructura de un edificio, mediante la integracion de sistemas que operan entre si. Ejemplos de sistemas: -Aire Acondicionado (AA) -Electricidad (EL) -Alumbrado (AL) -Circuito cerrado de television (CCTV) -Cableado (CB) -Redes de ordenadores (RE) -Telefonia (TL) -Buscapersonas (BU) -Incendios (IC) -Accesos/Presencia (ACC) -Intrusion (INTR) -Ascensores (ASC) -Megafonia (MG) -Sistema de Alimentacion Ininterrumpida (SAI) -Agua Caliente/Fria (AG) Estos sistemas pueden ser iniciales, finales, intermedios, o mixtos Por ejemplo, el sistema de CCTV es final, y su inicial es INT, es decir, INT-->CCTV A su vez, si un incendio debe parar los ascensores cuando no hay gente en el edificio, entonces INC+ACC->ASC Como se puede suponer, el sistema se puede liar todo lo que uno quiera. Es precisamente aqui cuando entra la IA. En un lenguaje de logica (tal como PROLOG o LISP) o una herramienta CASE, se programan todas la relaciones que se nos ocurran. Ahora podria dar unas explicaciones de nomenclatura y regla logicas, pero solo alargaria el articulo, asi que lo mejor es que os compreis un libro. Por ejemplo: NO INC => ASC INC y NO ACC => NO ASC INC => CCTV NO ACC => NO AA Notar que no es lo mismo NO ACC => NO AA que ACC => AA Sin embargo, NO ACC => NO AA si es lo mismo que AA => ACC Esto es lo que se llama "regla de la doble negacion" El mundo de la logica esta lleno de estas reglas, que se contruyen a partir de unicamente 4 axiomas, que son: A y NO A <=> F donde F significa Falso, o Contradiccion A o NO A <=> T donde T significa Cierto, o Suceso Seguro (A y B => C) y NO A y C => B NO (A y B) <=> NO A o NO B De de aqui se sacan otras 14 reglas secundarias (leyes de Morgan) algunas de las cuales parecen totalmente inutiles, y otras en cambio se usan mucho. Por cultura, esto viene desde los griegos, y luego fueron depuradas por los romanos; de ahi que algunas tengan nombres como "Tolendus Ponens", y tambien "Ponendus Tolens", y otros latinajos mas. Estas reglas estan inmersas en los lenguajes PROLOG y LISP, que las manejan al igual que el lenguaje C maneja los punteros; es decir, sin coste. Si en vez de estos 4 axiomas se usan otros distintos, se consiguen unos mundos paralelos totalmente coherentes internamente, pero irreales desde la experiencia humana. (Ahora si que voy a filosofar: estos mundos paralelos no pueden coexistir con el actual; las teorias y realidades, ya sean matematicas, fisicas, o informaticas son totalmente incompatibles - desde la raiz) La logica difusa es otra logica distinta, y no se basa en 4 axiomas, sino que elimina los 2 primeros y los tomar como nuevas reglas de inferencia. Esto obliga a darle un nuevo significado a los predicados "=>", "y", "o" Bueno, sigamos con la practica antes de que decidas darte a la bebida. En los Edificion Inteligentes se persiguen 2 conceptos: seguridad y ahorro. Por ello se intentan optimizar sistemas de alto coste, como el AA y el AL Para el AL, inicialmente se hace ACC => AL Esto es lo basico. Y nos ponemos a pensar: INC => NO EE ? apagamos sistema electrico si hay incendio ? INC => NO AL ? apagamos luces si hay incendio, para evitar cortocircuitos ? CCTV => AL ? Si pretendemos ver lo que pasa, deberiamos tener luz INTR => AL ? Si hay un intruso, le encendemos las luces ? NO EL => NO AL ? Si no corriente, es posible encender las luces ? Y entramos en el aspecto de la seguridad: INC => NO EE SI: Las normativas lo aconsejan INC => NO AL SI: Las normativas lo aconsejan CCTV => AL SI: Porque estas camaras no tienen ajuste de ganancia Y en el tema del ahorro INTR => AL NO: Un intruso no merece que le encendamos las luces. NO EL => NO AL SI: Asi se evita manipular los interruptores si no se usan. Luego seguramente se nos ocurriran mas cosas. Pero por lo pronto metemos estas clausulas en el programa. Vamos con otro sistema: CCTV. Inicialmente INTR => CCTV Y las preguntas de rigor INC => CCTV ? Queremos ver los incendios ? ACC => CCTV ? Queremos vigilar algunas areas ? ASC => CCTV ? Queremos que las camaras graben los accesos a ascensores ? La respuesta de seguridad: ASC => CCTV NO: porque la gente se sentiria vigilada (en un edificio de alta seguridad habria que elegir que SI ) ACC => CCTV SI: para vigilar el parking y la sala VIP INC => CCTV SI: parece una buena medida se seguridad Y lo mismo se hace con el resto de sistemas. Entonces al ejecutar el programa, nos dice una serie de incongruencias: INC => NO EE, para evitar cortocircuitos NO EE => NO CCTV, porque sin corriente, las camaras no funcionan pero por otro lado INC => CCTV porque queremos ver los incendios. Este es un problema tipico de cualquier sistema de IA: el deadlock, ping-pong o callejon sin salida, que se suele solucionar afinando mas el problema. Por ejemplo, si nos apoyamos en el sistema de BU, podemos saber si algun responsable conoce ya el problema. Y decidimos una nueva regla: si hay alguien que controla la situacion, apagamos las luces. Mientras haya caos, las dejamos encendidas: asi, sustituimos INC => NO EE por INC y BU => NO EE por supuesto, esto nos sigue dejando la cuestion del deadlock cuando NO BU Afinamos un poco mas: separamos del sistema de EE uno nuevo: el sistema de Electricidad de Emergencia (EEE), que a su vez lo unimos al SAI Asi, es mas facil: INC y BU => NO EE INC y BU => EEE INC y BU => SAI Introducimos un nuevo sistema llamado agendas (AG), basado en la hora del dia. Gracias a esto podemos encender las luces del exterior por la noche, encender las calderas antes de que empiece el horario de trabajo, activar el sistema de intrusion nocturno en las plantas, .... Y ajustamos de nuevo todos los sistemas. Esto es practica habitual: un nuevo sistema puede obligar a replantear el resto, dado que pueden aparecer incompatibilidades entre las nuevas clausulas. Una vez hecha la organizacion global de los sistemas, se pueden desglosar por plantas, porque lo mas normal es que se divida el edificio en sotanos, planta baja, plantas de oficinas, de viviendas, de servicios, plantas comunes, ... Esto multiplica el programa de tamanio, pero no hay incompatibilidades nuevas. Cuando llega la hora de hacer cosas especiales en estas plantas es cuando se aprecia la potencia del programa, el lenguaje, y la IA; por ejemplo: -Suponer que el acceso (a cada planta) es con una tarjeta magnetica; por tanto, un numero unico. -Se permite el acceso si el numero esta en una lista (o base de datos) -Se deniega el acceso si la persona tiene alguna restriccion temporal -Se permite el acceso si el area esta en lista de areas permitidas -Se deniega el acceso si el area tiene alguna restriccion temporal -Se permite el acceso si la hora esta en el rango de horario comun -Se permite el acceso si la hora esta en el rango de horario individual -Se deniega el acceso si no ha fichado para salir de otra area. -Se deniega si hace menos de 5 segundos que ha entrado en otra area. -Algunas tarjetas especiales pueden saltarse algunas de estas restricciones. -Algunas tarjetas especiales tienen mas restricciones Y al integrarlos con otros sistemas: -Algunas tarjetas especiales hacen cosas en otros sistemas -Todas las condiciones pueden variar segun el estado de otros sistemas Por ejemplo: 6969696969 ES TARJETA 6969696969 EN LISTA_TARJETAS (6969696969 EN FICHAJES) y (HORA NO EN HORARIO_TRABAJO) => NO ACC NO ((6969696969 EN FICHAJES) y (AREA(6969696969) EN LISTA_AREAS)) => NO ACC Esto no es igual que (6969696969 EN FICHAJES) y (AREA(6969696969) EN LISTA_AREAS) => ACC, pues esto permitiria el acceso incluso fuera de horario de trabajo. Es importante saber pensar en negativo y en positivo. (6969696969 EN FICHAJES) y (AREA(6969696969) EN AREAS_CLAUSURADAS) => NO ACC (6969696969 EN FICHAJES) y ($HORA EN HORARIO_EDIFICIO) => ACC (6969696969 EN FICHAJES) y ($HORA EN HORARIO(6969696969)) => ACC (6969696969 EN FICHAJES) y (6969696969 EN PRESENTES) => NO ACC (6969696969 EN FICHAJES) y (ULTIMO_FICHAJE(6969696969) > $HORA-5 ) => ACC Al final se acaban teniendo miles de reglas que son las que hacen que el sistema sea coherente. A veces esto hace que el sistema sea duro de comprender, inentendible su comportamiento e imposible de conocer totalmente. Pero de nuevo la IA viene en nuestro apoyo. Es posible darle unas premisas, una pregunta, y hacer que la responda; incluso te dice el camino que ha seguido para llegar a ese razonamiento. Es entonces cuando el humano reprograma (o afina) esa clausula. Se produce una retroalimentacion entre el sistema y el operario humano. Cuantas mas pruebas se hagan, mas confianza se tiene en el sistema. Otro paso que se suele dar es el uso de sistemas expertos que, tomando como entrada varios problemas y sus soluciones, inventan nuevos problemas y "aprenden" a encontrar sus soluciones. Si se hace que sea un sistema experto el que alimente el sistema de razonamiento del edificio, es posible automatizar el mecanismo de retroalimentacion. Y el uso de un sistema de algoritmo genetico introduce pequenias variaciones en los datos iniciales, viendo cual es el cambio en la respuesta del sistema. Por fin, un sistema de backtracking permite reducir el numero de premisas del edificio, aumentando su eficiencia. En este momento, me gustaria presentar un sistema minimo, y otro real, pero el minimo no ensenia nada, y el real es demasiado enrevesado como para entenderlo en 10 minutos (nos costo desarrollarlo 3 meses a 4 personas) Ahora un off-topic de IA, y un in-topic respecto a los edificios propiamente: los gadgets, o "todos los cacharritos que se pueden usar". Con el objetivo de que te animes a hacer que tu casa/chalet/cuarto/oficina sea un poco inteligente, cuento las miles de cosas que se pueden poner. Hay algunas baratas, las hay caras, otras las puedes hacer con el meccano, otras con un soldador y unas resistencias, muchas dependen de un ordenador, tambien hay extravagantes, inutiles, mejores de lo que parece, incluso algunas estan prohibido su uso. Cuento algunas cosillas, y un precio (K=1000, M=1 000 000) Seguro que los hay mas caros y mas baratos, y en muchos casos depende del humor del vendedor. Tambien puede que algunos precios o gadgets esten desfasados. Rele: a partir de 5V/0V, sacan 250V/0V. Ej, para encender bombillas. 50Pts Controlador Domestico: tarjeta con entradas/salidas. 8Entr/16Sal = 2KPts Conversor Analogico->Digital: 300Pts PC: cualquier ordenador Intel, desde 8086. Micro+placa+fuente alimentacion. Controlador Maestro: PC o similar que contiene el sistema inteligente. 50KPts Puerto paralelo del PC: Controlador Domestico de 4Entr/12Sal. 1KPts Todos los cacharros de medicion o de actuacion cuentan con salida o entrada analogica. Los de control son digitales, y algunos con protocolo serie. ACCESOS: lector casero: desde 2KPts. Analogico. Tu temporizas y mandas 100101001011... lector de tarjetas magneticas de 2 bandas: 10KPts, programable RS-232 lector/grabador de tarjetas magneticas de 2 bandas: 25KPts lector de tarjetas magneticas de 3 bandas: 25KPts lector/grabador de tarjetas magneticas de 3 bandas: 45KPts lector de tarjetas proximidad: 30KPts lector de tarjetas chip: 20KPts lector/grabador de tarjetas chip: 30KPts lector/grabador de tarjetas chip eprom: 100KPts cualquier lector, motorizado: +5KPts cualquier lector, en caja bonita: +5KPts cualquier lector, en caja anti-vandalismo: +10KPts teclado de membrana: 1Kpts teclado mecanizado: 5Kpts caja de teclado: 1Kpts pulsador miniatura 2mm x 2mm: 25Pts pulsador tecla 8mm x 8mm : 50Pts (mejor comprarse un teclado en el rastro) Grabador de etiquetas-pegatinas para tarjetas: 50KPts Plastificador de tarjetas magneticas/chip: 15KPts Sistema casero: con un casette viejo te haces un lector/grabador magnetico. Funciona muy bien. INTRUSION: Detector de presencia por movimiento: 300 Pts. ajustable Detector de presencia por infrarrojos: 500 Pts Detector de presencia por laser: 5KPts Detector de presencia por temperatura: 10KPts para sala 5m x 5m Detector de presencia por electricidad estatica: 1KPts para habitacion 2x2 Detector de presencia al pisar: 100Pts por metro2 Contacto magnetico para puertas: 100Pts Detector de rotura de cristales: 100Pts para 5cm x 5cm Detector de rotura de cristales: 1KPts por metro (tira adhesiva al contorno) Mecanizacion de persianas: 12KPts Mecanizacion de puertas: 20KPts Mecanizacion de vallas de tiendas y puertas de garaje: 100Kpts AIRE ACONDICIONADO: Sonda termica de temperatura ambiente: 100Pts Sonda termica de rango amplio (-25§,75§) : 1KPts Sonda termica de rango muy amplio: 10KPts o mas Valvula (permite pasar mas o menos aire): 3KPts (calidad media) Fan-coil (motor que mueve el aire) : 10KPts Tubos: 800Pts por metro, 400Pts por codo Aislante termico: 1200 por metro2 Maquinas de frio: desde 30KPts para 30metros cubicos (1 habitacion grande) Maquinas de calor: desde 5KPts para 30metros cubicos. Caldera: desde 200Kpts para 1000 litros Enfriadora de agua: desde 400Kpts para 1000 litros Ventilador: 3KPts Sistema casero: ventilador + valvula en la calefaccion. ELECTRICIDAD: Contactor (interruptor de seguridad): 250Pts Diferencial (fusible): 500Pts Magnetotermico (fusible de seguridad): 1KPts Cuadro electrico de baja tension: 4KPts Cuadro electrico de media tension: 10KPts Cuadro electrico de alta tension: 50KPts Cable: segun ancho, numero de hilos, seguridad, apantallado, ... Interruptores manuales: 2KPts Cajas: desde 5KPts Tubo pasacables: desde 200 Pts por metro ALUMBRADO: Bombilla y casquillo: 300Pts Luminaria: desde 1KPts Foco: desde 10KPts Dimer (convierte 0V-5V en 0V-220V): 500Pts Sonda luminica: 200Pts Interruptor: desde 200Pts Interruptor de varias posiciones: desde 500Pts Potenciometro: desde 300Pts Tubo pasacables: desde 50 Pts por metro Sistema casero: velas, o hacer una visita nocturna a la obra mas cercana. CCTV: Camaras de B/N : desde 2KPts Camaras color: desde 6KPts Con lente ajustable: +1KPts Con ajuste de ganancia: +1Kpts Monitor B/N: desde 7KPts Televisor: desde 15KPts TV por TCP/IP (nueva tecnologia, oye): 40KPts Partidor de imagen (4 en 1 monitor): 30KPts Secuenciador de 4 imagenes: 30KPts. Programable: 40KPts Secuenciador de 32 entradas, 8 salidas, programable: 300KPts Tarjeta de captura de video para PC: 10KPts CABLEADO: Cableado estructurado: Cable de fibra optica: 10Pts por metro. 50Pts por empalme. Rack (armario) para 24 conexiones: 100KPts. de calidad. Cableado telefonico: Cable de 16 hilos: 20 Pts por metro. Rack para 128 hilos: 50KPts Cableado Coaxial (2 hilos): 10 Pts por metro. 30 Pts por conector Rack para 32 conexiones: 40KPts REDES: Concentrador de 8 vias: 50KPts Hub 10/100 de 5 vias: 70KPts Router de 5 vias: 100KPts Aqui la variedad es enorme. Sistema casero: unirlos por el puerto paralelo o el serie. TELEFONIA: Telefono analogico: 2KPts Contestador: 7KPts Telefono digital: 5Kpts Instalacion linea analogica: 20Kpts + 2Kpts al mes Instalacion linea digital: 20Kpts + 4Kpts al mes Centralita 4 lineas: 20KPts Centralita 20 lineas + controlador Soft: 80Kpts Que yo sepa, solo se puede contratar tendido de lineas con Telefonica Instalacion linea Punto-Punto: 50Kpts Alquiler Punto-Punto (64Kb): 100Kpts/mes Alquiler T1 (1.500Kb) : 1200KPts/mes Compras 20 yogures, te los comes, y haces un agujero en el fondo. Los unes con un hilo. El alcance no es mucho, pero es barato. Tarifa plana. Otra solucion: cuando compras una RDSI, tienes 2 canales, tienes derecho a 2 numeros de telefono, y la facilidad de marcar hasta 8 extensiones. BUSCAPERSONAS: Centralita + panel control + 8 receptores (solo codigo numerico): 800Kpts Receptor numerico + datos : 40Kpts Soft: 200Kpts Casero: repartes telefonos moviles y marcas desde el modem. INCENDIOS: Detector humo: 2KPts Detector temperatura: 2KPts Sprinkel (salida de agua): 3KPts Centralita: 200KPts Soft: 200KPts. Pero es muy bueno Alarmas sonoras: 1KPts Puertas cortafuegos: desde 80KPts (con homologacion) Techos y suelos ignifugos: desde 25KPts el metro cuadrado Extintores: 12KPts Fundas ignifugas para cables: 800Pts por metro Sistema casero: termometros con detector maximo. Una tarjeta con tantas entradas (digitales) como termometros. Una manguera con valvulas. Una tarjeta con tantas salidas como valvulas. Aprovechas la salida y activas una luz de emergencia en la zona. ASCENSORES: Ascensor 4 plazas: 400KPts, sin instalacion Ascensor 12 plazas: 1500KPts Centralita + Soft: 1000Pts Sistema casero: escaleras MEGAFONIA: Altavoz: 500Pts Controlador en Altavoz: 10Kpts Centralita: 150Kpts con microfono, seleccion de zona y canal. Sistema ambientacion musical: 200KPts con 25 zonas, 4 canales Soft: 50KPts Sistema casero: montas un cableado para cada altavoz, un tarjeta con tantos reles como altavoces, 1 tarjeta de sonido para salida, otra para entrada, y un amplificador. Te haces el software y sacas .Wav SAI: Minimo (2 ordenadores, 500W, 2 horas): 150KPts Medio (todo el triple): 500KPts Suelen incluir una senial que indica cuando se va a acabar. Soft: 200KPts. OTROS: Anemometro (para medir la velocidad del aire): 1KPts Detector Sismico: 5KPts el casero, 200KPts uno profesional Pluviometro: 2Kpts el casero. Si todo esto te lo instala un chapuzas, sumar un 20% (garantia 1 anio) Si todo esto te lo instala un profesional homologado, sumar un 40% (1 anio) Instalacion de un profesional de la empresa fabricante, sumar un 80% (3 anios) En todos los casos, el cableado necesario no se incluye. Cuando un sistema incluye soft, se entiende que es tanto tener un protocolo, como un programa que hace uso de ese protocolo. Si decides hacerte tu mismo el programa, solo hace falta que el sistema posea capacidad de ser controlable por soft. Esto suele costar un 25%-50% del coste. Otra cosa: Hace ya mucho tiempo que se han desarrollado varios protocolos para controlar objetos mas o menos caseros (luces, sonido, interruptores, ...) y de estos cabe destacar EuroBUS y x10. EuroBUS es bastante profesional, pero a mi parecer esta demasiado orientado al control electrico de la senial: Electricidad, Aire acondicionado, Incendios y SAI son sistemas que se manejan bien, pero Accesos, CCTV, Telefonia, que son mas orientados a un protocolo de alto nivel, son imposibles de controlar. X10 le pasa lo mismo, pero esta orientado a sistemas mas caseros, tales como control de luces, interruptores, alarmas, ... y ademas se usa casi unicamente en los USA. Pero para iniciarse, esta bastante bien. Otra propuesta que parece empezar a marcar diferencias es manejar los dispositivos mediante comandos SNMP (Simple Network Management Protocol). Es un protocolo que funciona sobre TCP/IP (proximamente sobre IPX y otros), y permite interrogar y ordenar a los gadgets. Todos los cacharritos que lo soportan actualmente son orientados a red (Routers, Bridges, Ordenadores, pero tambien impresoras, modems y scaners), pero lentamente van aumentando con cacharros mas variados, principalmente centralitas (de incendios, telefonos, SAI, ...), dado que controlar los detectores, motores, altavoces requeriria poner un interface de red en cada uno de estos elemento de campo. Otro de los sistemas mas comunes se llama SCADA, y se basa tambien en un sistema de control de aparatos mas o menos inteligentes que a su vez controlan aparatos de menor capacidad, pero mayor especializacion. Dado que el protocolo SCADA es comun para muchos fabricantes, parece que es una gran promesa para el futuro. Pero lleva asi mas de 15 anios! Tambien mencionar que el Sistema Operativo QNX se instala en pequenios ordenadores de control, y, a traves de modulos especificos para los gadgets, es bastante potente. El tema es muy largo para comentarlo, y no es tan del dominio publico como cabria esperarse. Una casa con la que he trabajado y que me gusta mucho es ANDOVER CONTROLS. Tienen gran variedad de controladores, tanto maestros como esclavos. Los maestros son ordenadores industriales: procesador 68040, 8 Mg de memoria, Ethernet, totalmente programables en lenguaje de alto nivel, multitarea, puertos serie y paralelo, 2 dias de autonomia sin alimentacion, y muy resistentes en entornos agresivos. Los esclavos suelen usan un 68HC11 o similar, y los hay de muchos tipos: varias entradas/salidas analogicas/digitales, pantallas tactiles, sondas de temperatura, displays, arquitectura en red RS232/RS485, programables a alto nivel, y pueden funcionar aunque pierdan la conexion con su maestro. El sistema se llama INFINITY y, aunque es caro, para mi es el mejor. A continuacion muestro el sistema que he instalado en mi casa. Esta operativo las 24 horas del dia, y lo oriento a la comodidad, no al ahorro energetico. En realidad, lo tengo para sorprender a la gente que me visita. Mi casa tiene salon, dormitorio, cocina, excusado (:-), estudio, pasillo. Mi sistema tiene como corazon un PC con -Microprocesador 386 -Caja, fuente alimentacion. -4Mg de memoria -Disquetera -2 puertos serie, 1 paralelo -Interface de 2 Joysticks (2*2 entradas analogicas, 3*2 digitales) -Sin monitor, sin disco duro, -3 controladores domesticos, cada uno 16 entradas digitales, 8 salidas digit. -2 controladores domesticos, cada uno 2 entradas analogicas, 2 salidas analog. -Tarjeta de sonido, aprovechando tambien la entrada MIDI -Teclado, usado como 101 entradas analogicas (cada tecla), sabiendo que a veces se pueden pulsar hasta 15 teclas simultaneamente, y otras veces solo 2. -Tarjeta extra 2 puertos serie, 1 paralelo El ordenador arranca desde disquete. Carga el programa en memoria, y lo ejecuta. Cada poco tiempo guarda variables en el disco. Si hay un cambio de disco, lee las nuevas variables del disco, y sigue. Si hay un cambio de disco, lee el nuevo programa del disco, y sigue. Asi lo controlo facilmente desde mi PC "de verdad". Tambien lo conecto por un puerto serie al PC maestro, para monitorizar. Lo primero: las luces Tengo 14 lamparas, 1 de ellas con tubo fluorescente, y 13 bombillas. Pongo 8 dimmers. 4 interruptores on/off (4 entradas constantes), 3 interruptores de potenciometro 4 posiciones (off, poco, mucho, total: 3*4 entradas constantes) 7 pulsadores temporizados (7 entradas con control de tiempo; hay que pulsar solo un ratito para activarlas) Sumar 3 sondas de luminosidad. El cableado en algunos puntos tiene que ser doble (por ejemplo, para encender las luces del pasillo tanto desde un extremo como del otro). Un interruptor on/off funciona muy facil: el programa mira cuanto vale esa entrada, y si cambia, manda la orden a la salida; se activa el rele, y se enciende (o se apaga) la luz. Cada una de las 4 posiciones de un interruptor de 4 posiciones fuerza que se cierre un cirtuito, haciendo que se pulse una tecla. Esto es una entrada para el programa, que se encarga de activar un dimmer. El funcionamiento de un dimmer es sencillo: se manda tension de 5V. durante un tiempo; si este tiempo es inferior a 0.2 segundos, se apaga; si es superior a 1.2 segundos, se enciende al 100%; si esta entre 0.2 y 1.2 , se enciende a un porcentaje equivalente, por ejemplo, 0.3 sg encienden al 10%, 1.1 al 90% Los pulsadores temporizados funcionan (como yo quiera) de manera que en funcion del tiempo que est‚n pulsados, consideren una entrada u otra; si se pulsan durante menos de 0.2 segundos, apagan la luz; mas de 1.2 sg, encienden al 100%; cualquier tiempo intermedio, una luz proporcional. Por esto es bastante importante la temporizacion, tanto de entrada como de salida. while(1) { tiempo_anterior=tiempo_actual; tiempo_actual=time(); tiempo_intervalo=tiempo_actual-tiempo_anterior; if(salon->interruptor1->pulsado) salon->interruptor1->tiempo_pulsado+=tiempo_intervalo; if(salon->interruptor2->pulsado) salon->interruptor2->tiempo_pulsado+=tiempo_intervalo; if(estudio->interruptor1->pulsado) estudio->interruptor1->tiempo_pulsado+=tiempo_intervalo; if(estudio->luz1->dimmer->activo) estudio->luz1->dimmer->activo+=tiempo_intervalo; if(estudio->luz1->dimmer->activo) desactiva_dimmer(estudio->luz1->dimmer); ... // aqui se pierde mucho tiempo mirando las entradas if(estudio->interruptor1->cambio) { estudio->interruptor1->cambio=OFF; estudio->interruptor1->tiempo_pulsado=0; if(estudio->interruptor1->tiempo_pulsado <=0.2 ) pon_valor_luz(estudio->luz1, 0.2); // este valor tambien se temporiza en el bucle principal if(estudio->interruptor1->tiempo_pulsado >=1.2 ) pon_valor_luz(estudio->luz1, 1.2); if(estudio->interruptor1->tiempo_pulsado >0.2 && estudio->interruptor1->tiempo_pulsado <1.2) pon_valor_luz(estudio->luz1, estudio->interruptor1->tiempo_pulsado); // esta funcion tambien pone otros datos: hora de encendido, ... } } Ahora se une el sistema de iluminacion por deteccion de luminosidad: Este sistema se activa (en una habitacion) si ha pasado mas de media hora desde que se pulso un interruptor. Si esta operativo, cada 5 minutos se mira la luminosidad que hay, y se encienden/apagan las luces o se ajustan los dimmers. while(1) { if(estudio->luminosidad->activo) if(estudio->luminosidad->ultimo_tiempo_revisado > 5*60+tiempo_actual ) if(estudio->luminosidad->valor > 10+estudio->luminosidad->ultimo_valor || estudio->luminosidad->valor < 10-estudio->luminosidad->ultimo_valor ) { estudio->interruptor1->tiempo_pulsado=estudio->luminosidad->valor; estudio->interruptor1->cambio=OFF; // un sistema simula al otro } ... // siguen las comprobaciones anteriores ... // siguen las actuaciones anteriores } Y asi con todos. Como ya he dicho mas de una vez, este sistema acaba siendo dificil de entender. Sobre todo, a veces no funciona, debido a la interaccion de unos sistemas con otros. Entonces se tiende a un sistema multitarea: me invento un sistema de agendas que es capaz de mandarse a si mismo cosas para hacer, metiendolas en un cola. Esto transforma el sistema en uno totalmente modular, con la desventaja que hay que mantaner un monton de variables globales. Pero, con un poco de tecnica de programacion orientada a objetos, se soluciona. Una de las partes mas emocionantes es el reconocimento de ordenes por voz. Le dicto unas cuantas palabras (encender, mucho, pasillo, dentro de x horas, siete, abre, ... ) y unas cuantas estructuras semanticas: [accion] [ calific.cantidad | numeros ] [calific.temporales] [objeto] [lugar] Para que entienda ordenes del tipo "encender poco luz salon" o incluso "luz", "mas frio aqui", "abrir ochenta por cien ventana estudio", .. Tuve que instalar 8 microfonos, hacer que solo escuchara a uno de ellos, y 8 altavoces para saber lo que habia entendido. Al principio decidi que antes de hablar, tenia que pulsar un boton, al igual que se hace en los interfonos que conectan un despacho con otro, pero era mucho mas impresionante que no tuviera que hacer esto, y le pudiera hablar desde cualquier sitio. Al principio me costo que no entendiera las palabras de la tele ni de la musica, pero afinando para que solo reconociera mi voz. Me vi obligado a usar una palabra clave antes de mandar una orden (por cierto, asi cuando le hablo, baja el volumen de la tele - si lo cree conveniente) Ahora es im-presionante cuando digo "Sebastian, abre la puerta" y el contacto magnetico se libera y abre la puerta "Igor, sube volumen Compact Disc", "Igor, llama por telefono a mi hermana" "Ambrosio, me gustaria un Ferrero-Roche" (hasta ahora, esto no funciona). Si se conecta la tarjeta de sonido al telefono, y se pone el contestador automatico, tambien es posible mandarle ordenes para que enchufe algo; asi es posible tener las luces de encendidas antas de llegar, o la calefaccion, o mandr programar el video si se te ha olvidado y estas en la calle. Una de la cosas que mas me costo es el control de la tele, el video, y la cadena de sonido, asi que lo voy a explicar: Casi todos estos aparatos se pueden manejar con un mando a distancia, asi que abriendo el mando, se ve la matriz de conexiones que se activan cuando se pulsa alguna tecla. Por tanto se puede usar una tarjeta de salidas digitales para activar los reles que simulan las teclas. Pero yendo un poco mas alla, estos aparatos mandan una onda (infrarrojos o ultrasonidos), que se puede producir con una tarjeta de salidas analogicas acoplada al mismo dispositivo. Lo malo de esto es que entonces te quedas sin mando a distancia. Si se consigue un emisor de infrarrojos multifrecuencia, o se saca de algun mando de otra tele/video/hifi , suele ser facil ajustarlo. Quizas necesites un osciloscopio, conversores Digital-Analogico, y algun amplificador de senial. Tambien le he puesto un sistema de alimentacion ininterrumpida (UPS o SAI) para cuando falle la red electrica (hasta ahora no me ha pasado). Por supuesto que el sistema tambien funciona en manual. Lo que no se es que va a pasar cuando me mude de casa. Algunas cosas que se pueden hacer: subir/bajar temperatura encender/apagar/variar luces abrir cerraduras de puerta (con contacto magnetico = 1 salida digital) abrir ventanas (un motor, una salida dig. y una entrada dig. de 4 posiciones) hacer de contestador automatico llamar por telefono (al tabajo o a casa, dependiendo de la hora) hacer cosas si le llamo por telefono cambiar la tele de canal programar el video autoajustarse Algunas cosas que NO se pueden hacer cocinar, fregar, planchar, limpiar, lavar, hacer la cama, ... cambiar una cinta de casette autoprogramarse En general, para hacer algo asi hay que saber (o conocer a alguien que sepa) programar, electronica del PC, electronica analogico/digital, electricidad basica, mecanica media, y tener tiempo, ganas y dinero. Espero que alguien se anime. Al igual que hay una definicion de hacker que dice que es alguien que sabe mucho de ordenadores y tiene interes en aprender, entenderlos, y manejarlos hasta el tope, el campo de la domotica es igual de interesante, y es facil empezar.