Likindoy - Creado y mantenido por Juan Miguel Taboada Godoy y Juan José Denís Corrales Protegido bajo la licencia GNU/GPL, vease LICENCIA Version del documento: 200712171821 Visite: http://www.likindoy.org === 1. Introducción === Likindoy es un software Scada libre, fuertemente basado en protocolos y tecnologías popularizadas en Internet. Intenta ser un sistema simple, fácil de entender por hackers de ordenadores y ingenieros de control. Sus principales características son: -Es libre -Está escrito en Python -Usa extensivamente herramientas de software libre, principalmente Python, R y MySQL. -Funciona en sistemas con arquitectura de PC -Funciona en sistemas basados en Linux El desarrollador de Likindoy es el hacker Juan Miguel Taboada Godoy, guiado (y ocasionalmente ayudado) por el trabajo y las especificaciones de Juan José Denís Corrales, gerente de Axaragua y usuario final y sufrido de Likindoy por mucho tiempo. Likindoy está siendo soportado por Axaragua y la Oficina de Innovación de la Junta de Andalucía. Likindoy usa un ordenador para conseguir cubrir las siguientes tareas: - Logeo de datos - Supervisión de procesos - Recolección de datos de unidades remotas - Gestión de históricos - Servidor de datos mediante UDP === 2. Requisitos === Likindoy necesita principalmente Python para poder funcionar. Acuda al directorio doc/ en el que podrá encontrar el programa install.py que se encargará de comprobar los paquetes que faltan y de crear el usuario y base de datos correspondiente para usar Likindoy. Al finalizar la ejecucción correcta del instalador, acuda al punto 4 de este documento. Opcionalmente puede realizar una instalación a mano, en tal caso continue leyendo: También requiere: python-gnupginterface - Interfaz Python a GnuPG (GPG) python-mysqldb - Interfaz Python a MySQL python-paramiko - Interfaz Python para gestión de conexiones SSH2 python-rpy - Interfaz Python al entorno y lenguaje GNU R python-sqlite - Interfaz Python a SQLite 2 Nada más es necesario. Tenga en cuenta que el proyecto está en desarrollo y ha sido comprobado bajo distribuciones basadas en Debian. Cualquier tipo de ayuda será bienvenida así como el documento de instalación para otro tipo de distribuciones o incluso otros sistemas operativos. === 3. Conseguir que Likindoy funcione === A continuación describiremos una configuración mínima para empezar a trabajar. Para una descripción completa del sistema y la instalación atienda al Manual de Usuario en doc/. a) Creación de la Base de Datos y usuario de acceso con la siguiente configuración: servidor: localhost (127.0.0.1) puerto: 3306 usuario: likindoy clave: likindoyclave base de datos: likindoy_test b) Creación de las siguietnes tablas CREATE TABLE `datos` ( `id` int(11) NOT NULL, `server` timestamp NOT NULL default CURRENT_TIMESTAMP, `fecha` date NOT NULL, `hora` time NOT NULL, `valord` tinyint(1) default NULL, `valora` float default NULL, PRIMARY KEY (`id`,`fecha`,`hora`) ); CREATE TABLE `ids` ( `id` int(11) NOT NULL auto_increment COMMENT 'ID automatico', `md5` varchar(32) NOT NULL COMMENT 'ID MD5', PRIMARY KEY (`id`), UNIQUE KEY `md5` (`md5`) ); === CARGANDO LOS PRIMEROS DATOS === 4 - Antes de ejecutar cualquier comando vamos a renovar la lista de tareas por hacer para asi asegurarnos que Grafista acepta nuestras peticiones. > # --------------------------------------------------------------- > # --- Si en este paso se produce algun error --- > # --- significa que existe algun problema en la configuracion --- > # --------------------------------------------------------------- > ./renovar.py 5 - Preparamos los datos a cargar en la base de datos, para ello vamos al directorio raiz de iScada y ejecutamos el siguiente comando: > cp data/reg.bak/* data/reg/ 6 - Cargamos los datos a la base de datos > ./cargar.py === GENERANDO LAS PRIMERAS GRAFICAS === 7 - Creamos las gráficas que hay en los ejemplos: > ./graficar.py 8 - Podemos encontrar las gráficas generadas en los siguientes directorios: ./data/dib -> Para uso normal (generalmente se manda por email y se eliminan) ./data/dib.bak -> Copia de seguridad ./src/tmp/dib/hist/ -> Para historicos (se procesan en una web u otro programa) 9 - Para volver a pintar es necesario ejecutar el comando antes de crear las gráficas: > ./renovar.py === REGISTRANDO LOS PRIMEROS DATOS === 10 - También podemos registrar nuestros primeros datos usando el módulo web, para ello ejecuta el siguiente comando: > # --------------------------------------------------------------- > # --- En este punto el programa puede indicar que no es --- > # --- necesario sincronizar, lo que significa que ya has --- > # --- descargado los ficheros de hoy. Si quieres que la --- > # --- descarga sea mas asidua consulta el fichero: --- > # --- ./src/etcbin/adquirir_web_default.py --- > # --- y busca la linea: --- > # --- config.download_tempo(60*60*24) --- > # --------------------------------------------------------------- > ./adquirir_web.py ============================================================================= === NOTA ==================================================================== ============================================================================= 1 - Al declarar los registradores NET_UDP deberia insertarse en la declaracion la llave 3DES que se desee. Por defecto en la configuracion no se ha incluido ninguna llave, como se muestra en el siguiente ejemplo: net_udpPLC1_local=NET_UDP("127.0.0.1","plc1",s) aunque esto en el sistema equivale a: net_udpPLC1_local=NET_UDP("127.0.0.1","plc1",s,"abcdefghijklmnopqrstuvwx") pero deberia cambiar se a algo como: net_udpPLC1_local=NET_UDP("127.0.0.1","plc1",s,"123456789012345678901234") donde "123456789012345678901234" sea la nueva clave que usted desee usar para codificar su comunicacion UDP.