Maintenance: CrewList

Tabla superior(CREW LIST Llegadas/Salidas):

En esta tabla se cargan las operaciones de tipo Crew List filtrando por los centros del usuario. Para los tipos de operaciones se crean 2 opciones de configuración en app_cfg, ‘tipdoc.crewlist.arr‘ para las llegadas y ‘tipdoc.crewlist.dep‘ para las salidas. Dentro de las columna de Acciones nos encontraremos 3 o 4 botones dependiendo del estado de la operación:

  • Botón 1(Editar): Este botón solo aparece en los operaciones con estado En Revisión. Nos abre un modal que nos permite editar los datos que se muestran a continuación:
  • Botón 2(Ver): Nos lleva directamente a la pantalla de operaciones.
  • Botón 3(Clonar): Nos permite clonar una operación modificando antes los datos siguiente en caso de ser necesario:
  • Botón 4(Imprimir/Informes): Permite ejecutar informes sobre ese registro.

Si en la tabla superior tenemos alguna operación seleccionada estaremos editando dicha operación:

Por el contrario si no tenemos ninguna operación seleccionada estaremos creando una nueva operación:

Si estamos editando una operación pero queremos crear una nueva, basta con quitar la selección de dicha operación en la tabla superior para entrar en el Modo Crear.

Debajo de la tabla superior nos encontramos con un selector de agentes y 3 botontes:

  • Selector de agente. Nos permite seleccionar el agente que queremos añadir a la crew list.
  • Añadir Agente. Botón para añadir el agente. Estará deshabilitado si en el selector no tenemos ningún agente seleccionado.
  • Crear Agente. Nos abre un modal con un formulario con los datos básicos que nos permiten crear agentes. Tras crearlo el selector de agentes se recarga para incluir este nuevo agente.
  • Ejecutar operación. Está habilitado si tenemos en la tabla superior seleccionada alguna operación en estado En Revisión. Al pulsarlo nos solicitará la firma y desvinculará de este centro todos los usuarios de nivel 3(Técnico) y vinculará a este centro los agentes de este documento Crew List. Además modifica el estado de la operación a Realizado.

En la parte inferior encontramos la tabla con la información de los agentes de la Crew List seleccionada. En la columna de Acciones nos encontramos con un botón que nos llevará a la ficha de agente.

Actualizacion 31/05/2024

-Creacion pantalla apikeys ubicado en la opcion de menú sistema
-Cracion pantalla infdnv ubicado en la opcion de menú sistema
-Correccion error acumulados cuando no existen tablas para fi y ff
-Bloques mas grandes de telemetrias enviados por el recolector para agilizar llegada de datos antiguos. Hasta ahora habia una limitación del envio de estos paquetes y los barcos podian tardar mucho en actualizarse porque a veces generaban mas telemetrias de las que enviaban. Ahora en el cfg.ini se puede ampliar ese numero de paquete de envio para agilizar estes casos.
-Script php para leer csv del barco en funcion a los gaps generados por el recolector e incorporarlos a la tabla telemetrias que luego sera enviada a la nube mediante el recolector. De esta forma complementamos vacios de datos a causa de algun fallo en el pc o recolector durante ese tiempo.
-Cambios en api/puttelemetria para incorporar telemetrias en bloques mas grandes y también se ha agilizado mas la función y los inserts en grupo a la base de datos para que cada centro ahora tarde mucho menos en insertar telemetrias.
-Cambio en la funcion _nomequ para que se le pueda pasar el parametro isDemo y sustituir el nombre del centro de los equipos a DEMO.
-Corrección a la hora de generar rutas en ciertos barcos con nombres de puertos que contenian la coma
-Se ha añadido una tabla en la pantalla del centro (panCEN) y pestaña APLICACIÓN en la cual podremos ver y editar las opciones de configuración que determinan varios de los procesos que el barco puede realizar como por ejemplo eventos de zona horaria, rutas cortas,…
-Se ha creado un conjunto de scripts que generan y actualizan una nueva base de datos Timescale (postgre) en la cual estamos haciendo pruebas de rendimiento con el fin de agilizar consultas demasiado grandes ahora mismo y poder almacenar mas datos ocupando menos espacio.
-Se ha creado un api de consulta para peticiones DNV con las funciones vessels y log_abstract que actualmente esta última se encuentra en fase de mejora
-Se ha creado un sistema de scripts que controla la zona horaria de un barco. Este sistema inserta en la bbdd los cambios de estas franjas horarias para saber en que momentos el barco ha cambiado.
Esto se utilizará en varios sitios como en la pantalla principal del centro donde ahora se muestra la hora local del barco.
También se usará en los calculos de las horas a las que el barco genera las lineas del fichero DNV
-Corrección de errores menores tal como; Consultas sql, logs que faltaban por incluir, nombres incorrectos de logs, tipicos errores menores de código que no necesitan abrir ticket.

Actualizacion recolector 27/02/2024

-Se ha implementado un sistema de reordenacion de variables, lo cual permite meter direcciones desordenadas dentro del mismo equipo con saltos incluso. El programa reordena estas direcciones y analiza en que tamaño de bloque debe leer tomado como minimo 1 y como maximo el tamaño que nosotros iniquemos en el cfg.ini
Aqui dejo un ejemplo:
; EQUIPO 50850 MOTOR PRINCIPAL
IDEQ=50850
VAR=5000;394;RECOLECTOR_FO_Consumo_Instant_LitrosMilla_ME1; AUT
VAR=5006;411;RECOLECTOR_Consumption_ME1_FO_Type; AUT
VAR=5002;414;ECDIS_SPEED_LOG_VLW_Total_Distancia; AUT
VAR=5004;406;RECOLECTOR_ME1_Horas_Funcionamiento; AUT

; EQUIPO 50851 CAUDALIMETRO MP
IDEQ=50851
VAR=5008;395;RECOLECTOR_FO_Consumo_Instant_LitresHour_ME1; AUT
VAR=5510;403;RECOLECTOR_FO_Consumo_Diesel_Acumulado_ME1_ton; AUT
VAR=5012;618;RECOLECTOR_FO_Consumo_Fuel_Acumulado_ME1_ton; AUT

-Se han realizado mas pruebas sobre la deteccion de gaps para el futuro sistema de importacion de csv

-Se ha creado mediante codigo en el propio recolector un servidor modbus al cual se puede acceder mediante la ip de la maquina donde esta el recolector y el puerto que indiquemos en el cfg.ini
Este servidor devolverá en las direcciones que nosotros indiquemos el estado de los hilos del recolector. Los valores serán 1 para cuando todo va bien (OK) y 0 para cuando va mal (KO)
Las nuevas opciones de configuracion son las siguientes:
; Define las direcciones de memoria y variables que se exponen para su consulta en MODBUS
; MODBUS-SERVER
; Puerto por defecto usado para el servidor
mb_srv_port = 502

; estado de comunicación entre el recolector .net y el PLC
mb_srv_mb = 100

; estado de inserción de valores en la tabla RAM ram_modbus
mb_srv_ramdb = 101

; estado de inserción de valores en la tabla DISCO telemetrias
mb_srv_diskdb = 102

; estado de comunicación con central/nube vía API ej.cfg servidor = https://argos-coterena.com
mb_srv_web = 103

Actualizacion 27/02/2024

-Correccion al sql para calcular rutas actuales y otros errores a la hora de calcular rutas de las que no se conocia el puerto.
-Correccion a la hora de calcular puertos los cuales en el sql vienen con la misma hora el inicio y final (mov:0, ini:1, fin:1), ahora estos si cumplen el tiempo seran añadido tambien al array como puerto.
-Correccion menor para el touza con una traduccion que impedia añadir turbo b a las variables especificas
-Correccion a la hora de eliminar las coordenadas (0,0) sin tener en cuanta la distancia al punto correcto, evitando asi pequeños desajustes.
-Correccion menor a ocultar elementos del menú eliminado la cache para estos y incorporamos a las excepciones el informe frio
-Se ha añadido al informe frio la posibilidad de que los equipos de frio tuneles, bodegas, etc.. puedan tener subequipos y estos sean los que mostramos en las gráficas
-Moficacion al bloque B1 en la creacion de estructuras de centro para mostrar el CONSUMO ACUMULADO de los MM.AA. en caso de no tener caudalimetro los auxiliares. Se habilitaria asi tambien cambios en el informe de consumo
-Correccion en los containers de las tablas en informe de consumo y propulsion que bloqueaban la vista a las gráficas
Optimización tabla equipos la cual tardaba de forma exagerada en cargar
-Sistema de importacion y exportacion de estructuras de centros csv
-Correccion en algunas funciones que tienen que ver con obtener el arbol de equipos
-Reordenacion de variables en recolector
-Recoleccion dinamica en funcion al numero de direcciones consecutivas por bloque determinadas tambien por el tamaño del paquete
-Correccion de problema que hacia que se duplicaran lances u otros eventos comprobando si el evento ya existia
-Centrado verticalmente el contenido de las celdas de las tablas
Se ha limitado el numero maximo de variables a la hora de guardar un plan de tendecias
-Se ha arreglado el problema en la funcion que leia los elementos seleccionados por defecto en los combos multiples
-Se ha cambiado en la respuesta del csv AÑADIDA por CREADA para evitar la Ñ que producia un error al leer el csv
-Se ha modificado la tabla de app_paises para que ahora podamos marcar que paises perteneces a la UE
-Se ha corregido el error del filtro de la tabla de puertos
-Se han eliminado las tablas paises, provincias y se ha renombrado poblaciones a app_poblaciones

Actualizacion recolector 08/01/2024

Se han añadido varios controles de funcionamiento de los hilos del recolector para que a simple vista se pueda ver tanto los tiempos como si ha sucedido algun error en ese hilo que debe ser revisado en los logs o habilitar el modo dbug para estudiarlo.

El formato que veremos es el siguiente:
MB2DB v24.01.08: 17:53:23.480 Running MB(OK):62ms / RAMDB(OK):5ms / DISKDB(OK):0ms / WEB(OK):0ms…

MB2DB v24.01.08 -> Esta parte hace referencia a la versión del programa a simple vista. La version contiene el año, mes y dia en el que se compiló la versión.

17:53:23.480 -> Hora:minuto:segundo.milisegundo en el que esta el programa ejecutandose

MB(OK):62ms -> Funcionamiento del hilo de lectura modbus, en el podemos ver un OK o KO dependiendo de si algo ha sucedido en el proceso de lectura de datos. Se acompaña del tiempo que ha tardado en completar una vuelta a la funcion del hilo modbus.

RAMDB(OK):5ms -> Funcionamiento del hilo de escritura modbus en la tabla ram de la base de datos, en el podemos ver un OK o KO dependiendo de si algo ha sucedido en el proceso de escritura de datos. Se acompaña del tiempo que ha tardado en completar una vuelta a la funcion del hilo database ram.

DISKDB(OK):0ms -> Funcionamiento del hilo de escritura en la tabla de disco de la base de datos, en el podemos ver un OK o KO dependiendo de si algo ha sucedido en el proceso de escritura de datos. Se acompaña del tiempo que ha tardado en completar una vuelta a la funcion del hilo database disk.

WEB(OK):0ms -> Funcionamiento del hilo de comunicacion con la nube(web-api), en el podemos ver un OK o KO dependiendo de si algo ha sucedido en el proceso de comunicacion-recepcion-emision de datos a la nube. Se acompaña del tiempo que ha tardado en completar una vuelta a la funcion del hilo cloud(web).

Actualización Monitoring 15/12/2023

Nuevas gráficas informe frío
Se han añadido para las gráficas normales el límite a 50º/-50º
Se han añadido unas nuevas gráficas abajo del todo las cuales recogen todas las gráficas anteriores en una solo. Esta gráfica se ha decidido que las líneas del grid sean punteadas para visualizar los datos mejor, a demás todas las líneas estarán ocultas para que no se haga un lío con el primer vistazo que le demos.

Flecha dirección del barco en mapa
Se ha añadido la funcionalidad de que si el barco cuenta con las telemetrías y equipos adecuados podamos determinar hacia donde esta viendo en ese momento. Plasmamos así en el mapa una flecha con dirección a donde el barco apunta.

Solución a coordenadas erróneas mostradas en mapa
Se ha creado una función a la cual enviamos el array de coordenadas que compone la línea de la ruta que ha seguido el barco y elimina coordenadas erróneas. Esta función examina las coordenadas en busca de coordenadas que no sigan la línea de forma lógica y se queda con las coordenadas que componen una línea correcta. Esta función se irá mejorando cuando tenga acceso a mas datos incorrectos u otro tipo de errores que se puedan corregir
Ejemplos de como era antes:

Como está ahora:

Mejoras recolector
Se han añadido numerosos controles de errores y también almacena los gaps en en local en la tabla app_log, para que en un futuro pueda la aplicación usar estos logs para traer de vuelta la información que falte de los csv.
También se ha añadido la posibilidad de quitar el límite de registros para la tabla telemetrías en disco, pudiendo asi guardar en memoria muchos datos sin que estos sean borrados. Se ha actualizado la versión del recolector y del cfg.ini situado en monitoring para que todos los barcos puedan ser actualizados. A demás se han realizado numerosas pruebas para determinar como es el error de descuadre de telemetrías y sus posibles causas.

Nuevo bloque B5 para barcos que quieran el formato MGO y acumulados FUEL
Se ha añadido un nuevo bloque tal como los del FCM pero para los que no tengan FCM y queramos mostrar esos datos

Errores varios corregidos
-Errores de código.
-Error por el cual no se mostraba ruta o puerto en el bloque de Días/Horas de… en el informe del centro
-Error en bunkering a causa de un error de código
-Error en traducciones en varias partes del programa
-Error por el cual se generaban muchas entradas en app_trad en la pantalla infcentro

Actualización Monitoring 21/11/23

Cambios y correcciones al recolector
Se han corregido algunos errores a la hora de pasar telemetrías de ram a disco. Cuando no había nada en ram, se componía mal la cadena de texto SQL entonces arrojaba un error, ahora se analiza que haya registros que insertar, ya no entra en el script que compone en insert.
Se han cambiado los logs para la función encargada de obtener las variables, equipos y variables hf. Arrojaba un error causa de que se componía mal el json. Ahora si no hay datos ya no devuelve nada y en ese caso es el propio recolector el que genera el mensaje de que faltan datos de forma mas específica.

Cambios informe centro
Se ha adecuado la pantalla del centro (infcentro) para cuando tenemos un barco con FCM.
El bloque superior en este caso muestra el total fuel por un lado y por otro el diesel. Estos datos se recogen del equipo fcm del motor principal mas los acumulados de los auxiliares, etc…
Para poder usar este tipo de bloque debemos definir el bloque B como B3.

En el bloque de auxiliares se ha añadido un nuevo bloque con el totalizador de este consumo y potencia. Por defecto este bloque suma todos los consumos y potencias de los auxiliares, pero cuando contamos con un totalizador de consumos de todos los auxiliares y no tenemos los de cada uno, el programa se adapta y ya busca el equipo que contiene ese total y lo pone en este nuevo bloque. Aquí dejo dos imágenes con ambos ejemplos

Cambios informe consumo
Se han realizado cambios en el informe de consumo a la hora de trabajar con barcos que tengan FCM. La pestaña de motor principal esta desactivada y en su lugar hay una nueva de FCM. Las cajas y todos los totalizadores tienen en cuenta si es barco es FCM y si tiene totalizador de consumos para los auxiliares.

Se ha activado también la gráfica para la caldera.

Cambio al calculo de cargas en rutas y puertos
Se ha modificado el precálculo de carga en eventos de ruta para que el valor que cojamos sea el mas actual dentro de la fecha inicio y final que determina la ruta(azul).
A su vez se han puesto en 0 las cargas siempre que se trate de un puerto(verde)

Rework de la función que calcula la ruta GPS
A veces sucedía que la ruta era muy larga y al usar la tabla de medias podía haber algunos desajustes, ahora se usan las tablas en máxima resolución. A su vez se ha cambiado el sistema en el cual se emparejaban las coordenadas latitud y longitud, antes se estaba haciendo por orden de índice en el array devuelto por el SQL lo cual produjo algunos problemas cuando el array latitud no es el mismo de longitud y se descuadraba el resultado y teníamos un calculo de la ruta a veces con errores y aparecían rutas cortadas o con fallos raros. Ahora este emparejamiento se realiza por fecha, primero compongo un array con las fechas y luego el segundo busco según la fecha del primero para asegurarme de que siempre son los datos emparejados los que se muestran. Aqui dejo una imagen de la pantalla de detalle de evento en general, y luego otra del un dia en concreto

Informe de frío
Se ha añadido un nuevo informe al menú(Frio) que detalla las temperaturas de los múltiples tunes de frio que tenga la instalación. Este informe tiene dos formas de mostrar datos. La primera es para periodos menores a 30 días, lo cual funciona como cualquier otro informe, obtengo los datos en máxima y los muestro en las gráficas. Si la cantidad de datos excede el límite que puede mostrar el gráfico para por una función que recude su tamaño conservando la estructura. Aquí un ejemplo de este caso:

El segundo caso es cuando consultamos rangos de fechas mayores a 30 días, entonces usamos la tabla de media resolución, la cual nos da una telemetría real cada 6 horas y así podemos mostrar periodos de tiempo muy largos sin a penas tiempos de carga. Esto también se explica en un aviso azul que aparece en la pantalla, lo cual nos indica que estamos consultando datos en media resolución(6 horas). Este sería un ejemplo de este informe con un periodo de dos meses.

Se ha actualizado este informe para que ahora se muestren los túneles de frio en una pestaña y las bodegas en otra, las cuales antes no se mostraban.

Maintenance: Actualización 03/11/2023

Se crea una nueva pantalla de Edición Rápida para los tipos de documentos Plantilla Operación Estándar(/edirappoe). La funcionalidad es similar a la Edición Rápida que ya existía, las diferencias son:

  • Se crea una opción de configuración en app_cfg(tipdoc.poe) en la que configuraremos el/los id(s) del tipo de documento POE(Plantilla de Operación Estándar).
  • Los campos para editar/crear.
  • Los campos que se muestran en la tabla.
  • La forma de editar las líneas de la tabla. Para editar deberemos seleccionar la línea y automáticamente se rellenará el formulario con la información de la línea para poder editarla. Tras guardar, el formulario se borrará solo y pasará a estar en estado de creación.

Pantalla Operaciones.

  • Se modifica el enlace de Operación Rápida para que nos lleve a la Edición Rápida correcta dependiendo del tipo de documento. Los documentos configurados en tipdoc.poe llevarán a esta nueva pantalla de Edición Rápida(/edirappoe)
  • Se crea un nuevo control para poder relacionar las Operaciones con los Grupos Funcionales.

Pantalla Agentes

  • Se mejora el selector de Tipo de Agente ya que ahora muestra toda la ruta(padres e hijos).
  • En la tabla se añade una columna con los tipos de agente para cada agente.
  • Se crean 2 nuevos campos para poder relacionar a los agentes con Centros y Grupos Funcionales.

Pantalla Usuarios

  • Se cambia el tipo de control y la ubicación en pantalla de los controles para relacionar Usuarios con Centros y Grupos Funcionales.
  • Como mejora de seguridad, en la tabla de Usuarios, solo se cargarán usuarios con un nivel igual o inferior al del usuario actual.

Detección gaps recolector

Se ha añadido la funcionalidad de que el recolector detecte periodos de tiempo en los que no ha recibido telemetrias ya sea por fallo de recolector o por fallo del automata.

Para ello se ha creado la opcion de configuración DATAGAP_LAST la cual nos da cual fue la última insercción correcta en la tabla telemetrias.

Para el control de gaps tenemos un valor en el cfg.ini que nos indica cada cuantos minutos reconocemos que hay gap de datos, este valor se indicaria en la linea: frecuencia_gaps = 60, donde 60 son los minutos que tienen que pasar para que sea reconocido como gap

Cuando la insercción de datos es correcta vemos el DATAGAP_LAST, la cantidad de minutos que han pasado desde esa última insercción y el valor de frecuencia_gaps. Si hay gap, introducimos un mensaje en el log y añadimos una telemetria tal como esta:
 idvariable:5, idequipo:0, momento:DATAGAP_LAST, valor:minutos de gap

Esta telemetria se trasmitirá a la nube para poder analizar los gaps y recuperar esos datos en el futuro.

Actualizacion Rutas cortas – Monitoring

Se ha implementado un sistema por el cual el sistema ahora puede detectar pequeños movimientos entre puertos muy cercanos cuando antes solo se trataba esto como PUERTO.
Este sistema esta funcional para los barcos que usen las rutas cortas.
La función encargada de detectar estas mini rutas, es llamada despues de generar las rutas principales, luego todos los puertos se analizan en busca de estas subrutas. Si encontramos alguna, el sistema partirá ese evento de forma que acabará creando 3 eventos de 1, ya que ahora pasaremos de un PUERTO a PUERTO>RUTA>PUERTO.
Para esta detección sigo usando la variable en la que establecemos cual es el tiempo minimo que tiene que estar el barco moviendose para determinar si esta en ruta o no, este valor es una variable de configuración que tiene cada barco.

También se han añadido los eventos SIN DATOS, los cuales indican periodos en los cual el barco no ha enviado telemetrias y no se puede determinar si el barco se encuentra en ruta o no.

También estamos haciendo correcciones sobre los calculos en los puertos de origen y destino en caso de error. Hay dos tipos de corrección:

  • Se detecta bien la ruta y puerto pero el nombre del puerto origen y destino es diferente. En este caso lo solucionamos modificando el puerto destino con el anteriormente detectado. El puerto corregido lo marcamos con *
  • En caso de falta de datos, o error de coordenadas en los mismos para determinar un puerto, marcamos ese puerto de origen o destino como ERROR, y luego lo sustituimos por el puerto al que debería apuntar mediante lógica. El puerto corregido mediante este sistema se marca como **