-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 **

Maintenance: Actualización 06/09/2023
Ejecutor Ciclos de Operaciones
Dentro del menú Gestión Operaciones->Ej. Ciclos Ope. tenemos una nueva pantalla desde la cual podremos crear/editar Ciclos de Operaciones, previamente configurados en su correspondiente página(Gestión Aplicación->Ciclos de Operaciones).
Al entrar en la pantalla nos encontramos con un desplegable para seleccionar el ciclo que nos interesa.

Una vez seleccionado el ciclo, nos aparecerá lo siguiente:

Botón Nuevo Ciclo: Al hacer pulsar este botón podremos crear un nuevo ciclo. Para crearlo podremos seleccionar una operación existente o si dejamos en blanco el desplegable nos creará el ciclo a partir de un documento en blanco. Al nuevo ciclo creado se le aplicará la configuración(valores por defecto, campos a clonar, etc) tal y como la metimos en la página de configuración de ciclos de operaciones para cada uno de los pasos.(Gestión Aplicación->Ciclos de Operaciones)

Tabs y tablas de la parte inferior: Cuando en el primer paso seleccionamos una ciclo de operaciones, se crearán automáticamente tantas «tabs» como pasos tengamos configurados en el ciclo. En el título de las «tabs» indicamos el paso del ciclo, así como el tipo de operación que se creará para ese paso. En estas «tabs» también podemos ir seleccionando operaciones de ciclos que ya están iniciados. Al ir seleccionando, automáticamente se irán rellenando las tablas de las siguientes «tabs» con los documentos de cada paso para ese ciclo. Dentro de cada una de las tabas tenemos un bóton «Ver Operación» que nos abrirá la operación seleccionada en otra pestaña.
Botón Siguiente: Al seleccionar una operación en las tablas, podremos crear el siguiente paso del ciclo pulsando el botón Siguiente. Dependiendo de como esté configurado el paso que vamos a crear el funcionamiento sería:
- NO Divisible, No Apilable: Si ya existe una operación el siguiente paso nos saltará una advertencia y no la podremos crear. Si no existe se creará automáticamente el siguiente paso y se nos habilitará la siguiente «tab». La nueva operación contendrá todas las lineas aplicando la configuración(valores por defecto, campos a clonar, etc) para el paso creada en Gestión Aplicación->Ciclos de Operaciones.
- NO Divisible, SI Apilable: Funciona igual que el paso anterior con la diferencia de que si ya existe una operación en el paso siguiente nos permitirá crear tantos pasos como necesitemos sin validar que ya existe el siguiente.
- SI Divisible, No Apilable: En este tipo de pasos al pulsar Siguiente nos aparecerá una ventana modal en la cual podremos encontrar en su título información sobre el paso en el que estamos. A continuación información sobre el paso que vamos a crear. La primera tabla contendrá las operaciones existentes en el siguiente paso. Si en esta tabla seleccionamos alguna operación las líneas que seleccionemos en la tabla inferior, se añadirán a esta operación, de lo contrario, se creará un documento nuevo con esas líneas. Mas abajo podemos encontrar un texto informativo que nos indica si estamos creando una operación nueva o estamos editando. La última tabla contiene las líneas de la operación actual que queremos enviar al siguiente paso. Podremos editar el campo cantidad y seleccionar las líneas que nos interesan enviar al siguiente paso. Las líneas que aparecen aquí están filtradas, no aparecerán líneas que ya estén en operaciones del siguiente paso. Al ir enviando líneas al siguiente paso, irán desapareciendo automáticamente de esta tabla. Cuando tengamos seleccionadas las líneas pulsaremos en Siguiente en la parte inferior y se ejecutarán las acciones correspondientes (valores por defecto, campos a clonar, etc).

- SI Divisible, SI Apilable: El funcionamiento es como el paso anterior con la diferencia de que en la tabla de las líneas no se filtrarán las líneas que ya estén el operaciones del siguiente paso ni irán desapareciendo de la tabla si nosotros las seleccionamos y las enviamos al paso siguiente, permitiendo así tener la misma varias veces en la misma operación o en operaciones distintas.
Monitoring: Actualización 21/09/2023
Cambios finales a los informes Propulsión, Consumo, Generación para los barcos eléctricos.
Se ha adaptado el informe de propulsión para los motores eléctricos.
Se ha adaptado el informe de consumo para los motores eléctricos.
Se ha adaptado el informe de generación para los motores eléctricos con los siguientes puntos:
- Variables para las gráficas y tablas para las pestañas de auxiliares, cola y motores puerto.
- Uso de los equipos PMS>AG# Y PMS>EMG#
- Gráficas personalizadas cuando sean eléctricos en las diferentes pestañas
- En la pestaña gestión eléctrica se han añadido gráficas para el % de carga de los equipos y los KW y sus respectivas cajas arriba.

Nuevas cajas en la pantalla de centro para mostrar variables de barcos eléctricos.

Se han corregido errores en el informe de bunkering y a demás se ha añadido un sistema aun sin probar que detecta bunkering en curso. El sistema los presenta como si fuese un evento, pero sin meterlo en ninguna tabla. Los datos se meten en una cookie de sesion los cuales se recuperan para construir la gráfica mediante JS.
Ajustes en varias funciones como getSQLval, lstBunkering y demás para soluciones de errores varios.
Gestión Equipos-Variables en pantalla del centro
Se ha añadido una nueva pestaña llamada Equipos/Variables en la cual hay una tabla que muestra la información del centro en cuanto a equipos y variables relacionadas se refiere. Los equipos son nombrados teniendo en cuenta todos sus equipos padres. Los campos de la tabla son los siguientes:
- Centro: Nombre del centro que estamos consultando
- Equipo: (idequipo)Nombre del equipos + equipos padre en este formato padre>hijo>subhijo
- Variable: (idvariable) unidad | nombre variable
- Nombre específico: Este nombre se puede editar en el boton de la ultima columna
- Variable específica: Indica si esta variable es específica, se puede editar en el boton de la ultima columna
- Alta frecuencia: Determina si esta variable la queremos recoger en el recolector a alta frecuencia en caso de alarma, se puede editar en el boton de la ultima columna
- Botón editar

El botón editar nos permite cambiar el nombre específico de la variable-equipo que hemos seleccionado, si se trata de variable específica y si queremos recolectarla a alta frequencia

Al guardar, la tabla se recargará automáticamente sin necesidad de recargar la página para una mayor fluidez de trabajo
