View this PageEdit this PageUploads to this PageVersions of this PageHomeRecent ChangesSearchHelp Guide

Mantenimiento de ISA/CRP: diagnóstico de problemas

Qué son el ISA/CRP


Son dos programas que intervienen como intermediarios para solicitar a los equipos de InfoGlobal que se ponga una cámara en los retroproyectores gigantes del puesto de mando, de Puerta del Sur o en las pantallas de plasma de los TICS.

Para algunas estaciones del metro, también se usa para enviar las petiones de cámaras en los casos en que dichas peticiones no vayan por la unidad maestra.

Arquitectura


 [Retroproyectores]
 [VideoWall/aplicación de infoglobal]
 [CRP]
 [ISA]
 [ui_plano/ui_teleindicador_integ]

Cada retroproyectos o pantalla de plasma es el monitor de un equipo de InfoGlobal denominado VideoWall (es una máquina WIndows, generalmente Windows 2000).
Todos los VideoWalls que forman un mosaico "simulando una pantalla gigante" se conectan al mismo CRP (por socket TCP, puerto 7201 [7202, 7203...] en adelante, cada VideoWall a un puerto diferente; los puertos se asignan contado desde la esquina superior izquierda de izquierda a derecha y después avanzando de arriba a abajo). Hay una anomalía para el TICS de ministerios, en los que el CRP de seguridad tiene el puerto 7301 en adelante.

El CRP de SICO es un equipo de los embebidos tipo pupitre_sc (de los negros de 1U) que corre una única aplicación: crp_main. Anomalías: los crps de Alto del Arenal (crp01, crp02) son máquinas normales, al igual que los crps de puerta del sur (panelvga05 y panelvga06).

A dicho CRP se conectan los ISAS al puerto 7200 TCP (otra vez, anomalía en seguridad de TICS de ministerios que se conectan al 7300). El ISA es una aplicación que hace las funciones:

1) Dejar elegir al usuario dónde quiere situar la siguiente cámara

2) En el caso de los puestos de operador, poder elegir una cámara a poner de una lista (la lista está definida en un fichero de configuración llamado fich_video_estaciones; es muy importante porque si metro cambia la lista, hay que cambiar el fichero en todos los equipos que ejecutan el ISA).

3) En el caso de que se puedan fijar cámaras usando el ui_plano/ui_teleindicador_integ, el ui_plano/ui_teleindicador_integ usa un módulo llamado libisacd que le permite comunicarse con el ISA utilizando memoria compartida, y así solicitar al ISA que se fije tal o cuál cámara.

La última parte es el ui_plano/ui_teleindicador_integ, que como decía en el punto (3), puede fijar cámaras usando una comunicación con el ISA por memoria compartida y señales.

Tipos de cámaras


El CRP guarda un fichero de estado llamado estado.retros en el que se pueden ver qué cámaras están activas en cada posición junto con otros datos.

En cada retro (o pantalla de plasma) puede haber una sólo cámara ocupando todo el retroproyector o bien 4 cámaras (con el retroproyectos dividido en 4 cuadrantes).

Hay los siguientes tipos de cámaras:

1. Cámaras de estación tipo VEC...: son las que se ponen desde la lista que hay en el ISA. Viene de "Video de Estacion Central". Los números que le siguen son: VEC<ll><ee><ccc>; siendo <ll> el número de línea, <ee> el número de estación y <nnn> el número de entrada en la BBDD para esta línea/estación con la cámara que se quiere fijar.
2. Cámaras de estación tipo VEL...: son las que se ponen desde el ui_plano. Viene de "Vídeo de Estación Local". Se interpreta igual que el VEC sólo que <nnn> es el número cámara de la estación que se quiere fijar (mucho más lógico que lo de las BBDD de antes).
3. Cámaras de trenes tipo VTC...: Indican la cámara de un tren ("Vídeo de Trenes Central"). Los números que le siguen son: VTC<ttttt>/<nn>; siendo <ttttt> el número de unidad de tren (su matrícula), <nn> el número de cámara dentro de ese tren (puede ser 01 o 02). Así, una cámara de este tipo es VTC08263/01
4. Rondas tipo VER01...: indican una ronda (una lista prefijada de cámaras que el operador ha inicializado en la BBDD de infoglobal usando una aplicación de InfoGlobal llamada MetroCli).

Otros equipos que pueden fijar cámaras


Tanto en el puesto de mando como en los TICs hay un PC windows de InfoGlobal con una aplicación llamada MetroCLI, que también les permite ver y fijar cámaras.

Cómo entrar en los diferentes equipos


en un CRP

Se entra con un telnet a su IP (lo más cómodo es ip a la OP desde la que te han informado del problema y escribir "telnet CRP") con usuario/pass: isa/metro1.

Una vez dentro te vas al directorio /home/ControlRetros/Datos

Anomalía: en el TICS de ministerios hay un solo equipo CRP y dentro de él hay dos instancias del CRP. La parte de estaciones del TCS tiene sus datos en /home/ControlRetros/Datos, mientras que la parte de seguridad (de donde casi seguro que ha llegado la incidencia si la hay) está en /home/ControlRetros/Datos7300.

En un operador que corre el ISA

Entras de la manera habitual (si es un poi con un ssh, si es una op con un telnet/rlogin) y te vas al directorio
$ cd /usr/local/sico/isacd

En una estación

Entras en el PC del TCE de la maera habitual y el ISA está en
$ cd /home/metro/isacd

El CRP está en
$ cd /home/metro/crp

(sí, en los PCs de estación que tienen el ISA, también corren de forma local el CRP).

Problema: dicen que no funciona (normalmente que un videlwall de IG no está conectado)


En el crp ves el estado actual (son los números entre paréntesis de APLI; los que están en blanco es que no están conectados; en el listado se empiezan a contar desde 0 pero infoglobal llama a los videowalls desde 1):

 # tail /home/ControlRetros/Datos/crp.log

También para ver la conexiones/desconexiones sólo:

 # grep '!' /home/ControlRetros/Datos/crp.log

Problema: cámaras o rondas que no existen en el ISA


Eso es que han actualizado la BBDD y hay que llevar el fich_video_estaciones a todas las máquinas.

1. Te vas a salchicha y entras como darío
2. Te vas al siguiente directorio:
$ cd /home/dario/Programacion/proyectos/sico-actualiza/op/*es
3. Ejecutas (en el monitor de salchicha):
$ ./actualiza-todo.sh
4. Cuando se te abre una ventana y te dice que apuntes un md5, lo apuntas (bueno, con que apuntes las primeras 4 "cifras" vale)
5. Vas dando al ENTER en la ventana original para que vaya actualizando cada máquina. Si en alguna se queda colgada, miras un poco más arriba el nombre de la máquina y la apuntas (o no, no importa mucho) haces un ctrl-c y seguirá con la siguiente. Después de actualizar una máquina te pone el md5 actualizado, compruebas que es el que apuntaste (si no coincide, seguramente es que el disco está en read-only; pero rara vez ocurre).
6. Apuntas aquí que lo has actualizado.

Problema: "Largo Linea debe ser 1" (no se pueden fijar cámaras de vídeo de trenes)


Si haces un grep de "Largo":
 cd /home/ControlRetros/Datos
 grep -B5 "Largo" crp.log

Y obtienes algo del estilo de:
Sat Aug 22 20:31:27 2009 (MESG): ISA->CRP socket 12: Tam{XY(0,0)+TamXY(2,2)+IdAplic("PCVT1")
Sat Aug 22 20:31:27 2009 (MESG): CRP->ISA socket 12: Exito envio Estado{Tipo(2)+Estado(Largo Linea debe ser 1)} a ISA 1.


Entonces es que el ISA se ha desconfigurado. En la OP correspondiente haz lo siguiente:
 cd /usr/local/sico/isacd
Edita el "autosel.cfg" para que la línea que empieza por "VIDEO TRENES" termine en "1,1" (cuando está mal, termina en "2,2":
VIDEO ESTACIONES,0,0,0,0,1,1
VIDEO TRENES,0,0,0,0,1,1


Reinicias al isa:
ps -efa | grep isa | grep -v grep | grep -b relaunch | sed "s/  */ /g" | cut -d " " -f 2 | xargs kill

Y ya debería estar arreglado.


Cosas que se pueden comprobar en directorio /home/ControlRetros/Datos de los CRP



Ver conexiones/desconexiones de aplicaciones y de ISAs (la exclamación)


Se hace un
 cd /home/ControlRetros/Datos
 grep '!' crp.log

Con eso te pone sólo las líneas de estado que corresponden con que se ha conectado o desconectado una APLI (es decir, un videowall) o ISA (es decir, un puesto de operador).

Ejemplo:
Tue Aug 25 04:26:12 2009 (PING): CRP->ISA/APLI Estado de conexiones Aplics: ( ) ( ) ( ) ( ) -- ISAs: (0) (1) ( ) ( ) ( ) ( )!
Tue Aug 25 04:27:12 2009 (PING): CRP->ISA/APLI Estado de conexiones Aplics: (0) (1) ( ) (3) -- ISAs: (0) (1) ( ) ( ) ( ) ( )!
Tue Aug 25 04:32:12 2009 (PING): CRP->ISA/APLI Estado de conexiones Aplics: (0) (1) (2) (3) -- ISAs: (0) (1) ( ) ( ) ( ) ( )!
Tue Aug 25 10:19:54 2009 (PING): CRP->ISA/APLI Estado de conexiones Aplics: (0) (1) (2) (3) -- ISAs: (0) ( ) ( ) ( ) ( ) ( )!
Tue Aug 25 10:22:00 2009 (PING): CRP->ISA/APLI Estado de conexiones Aplics: (0) (1) (2) (3) -- ISAs: (0) (1) ( ) ( ) ( ) ( )!


En el ejemplo se ve que:
  • a las 4:26:12 se han conectado dos ISA
  • a las 4:27:12 se han conectado las aplicaciones 0 1 y 3 (infoglobal llama a los videowall empezando de 1, con lo que eso se traduce en los videowall 1, 2 y 4)
  • a las 4:32:12 se ha conectado la aplicación que faltaba, la 2 (videowall 3)
  • a las 10:19:54 se ha desconectado un ISA
  • a las 10:22:00 se ha vuelto a conectar dicho ISA.

Si quieres tener información precisa de las conexiones, has de hacer lo siguiente:

/home/ControlRetros/Datos$ cat crp.log | logs/logsocket2ip.tcl | grep CONX | grep -v INFO

(en caso de no tener el ejecutable logs/logsocket2ip.tcl, lo coges de main1:/incoming y lo pones ahí, dándole permisos de ejecución con un "chmod 755 logsocket2ip.tcl").

Comprobar si ha habido peticiones de vídeo de trenes


Se hace un:
 cd /home/ControlRetros/Datos
 grep VTC crp.log

Qué es un "socket de -1" en el crp.log


Significa que esa aplicación (videowall) no estaba conectada en el momento de intentar mandar la petición. Problema de infoglobal => Sin incidencia para SICO.

Comprobaciones adicionales (helper scripts)


En caso de tener que mirar petición a petición qué ha pasado, hay una script en pike que se puede usar en frontpci02. Hace falta saber la IP del isa a comprobar.

1. Te llevas el crp.log a main1:/incoming
2. Entras en frontpci02
3. Te pones en el directorio /incoming
4. Haces:
 ./check-log-unfulfilled.pike crp.log ip_del_isa> /tmp/res
5. Ver sólo los mensajes de error proporcionados por APLI (es decir, el videowall)
 grep -B1 Estado /tmp/res
5. Examinar todas las peticiones y sus respuestas
 less /tmp/res

Básicamente, en el fichero /tmp/res tienes filtrado el crp.log de manera que sólo ves las petiones del ISA que has indicado, y pone cada petición hecha por el ISA seguida de la respuesta que proporcionó la APLI (es decir, el videowall).