Recoge y genera nuevos datos
This commit is contained in:
@@ -1,5 +1,5 @@
|
|||||||
// Importamos las utilidades que necesitemos y la configuración del programa
|
// Importamos las utilidades que necesitemos y la configuración del programa
|
||||||
import { sleep } from './utils.js';
|
import { sleep, saveDataInFile } from './utils.js';
|
||||||
import config from '../config.js';
|
import config from '../config.js';
|
||||||
|
|
||||||
// Creamos una lista de elementos que contendrá las peticiones acumuladas para enviarlas de golpe
|
// Creamos una lista de elementos que contendrá las peticiones acumuladas para enviarlas de golpe
|
||||||
@@ -20,13 +20,20 @@ async function subirDato(datos) {
|
|||||||
field2: datos.temperatura,
|
field2: datos.temperatura,
|
||||||
field3: datos.presion,
|
field3: datos.presion,
|
||||||
field4: datos.altitudSegunPresion,
|
field4: datos.altitudSegunPresion,
|
||||||
|
field5: datos.altitudMetros,
|
||||||
|
field6: datos.velocidadKmph,
|
||||||
|
field7: datos.numSatelites,
|
||||||
latitude: datos.latitud,
|
latitude: datos.latitud,
|
||||||
longitude: datos.longitud
|
longitude: datos.longitud
|
||||||
};
|
};
|
||||||
|
|
||||||
|
//console.log(datos);
|
||||||
//console.log(datosParaEnviar);
|
//console.log(datosParaEnviar);
|
||||||
|
|
||||||
|
// Guardar datos en archivo: https://nodejs.org/en/learn/manipulating-files/writing-files-with-nodejs
|
||||||
|
|
||||||
peticionesRetrasadas.push(datosParaEnviar);
|
peticionesRetrasadas.push(datosParaEnviar);
|
||||||
|
saveDataInFile(datos);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
import fs from 'node:fs';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Convierte una línea de datos en un objeto
|
* Convierte una línea de datos en un objeto
|
||||||
* @param {string} line Línea de datos para convertir a objeto
|
* @param {string} line Línea de datos para convertir a objeto
|
||||||
@@ -6,6 +8,8 @@
|
|||||||
function dataLineToObject(line) {
|
function dataLineToObject(line) {
|
||||||
//Separamos nuestra línea en diferentes trozos usando como separador el ';'
|
//Separamos nuestra línea en diferentes trozos usando como separador el ';'
|
||||||
const lineArray = line.split(";");
|
const lineArray = line.split(";");
|
||||||
|
console.log(line);
|
||||||
|
saveDataInCSVFile(line);
|
||||||
|
|
||||||
//Devolvemos un objeto con sus propiedades convertidas
|
//Devolvemos un objeto con sus propiedades convertidas
|
||||||
|
|
||||||
@@ -23,9 +27,10 @@ function dataLineToObject(line) {
|
|||||||
longitud: parseFloat(lineArray[6].trim()),
|
longitud: parseFloat(lineArray[6].trim()),
|
||||||
altitudMetros: parseFloat(lineArray[7].trim()),
|
altitudMetros: parseFloat(lineArray[7].trim()),
|
||||||
velocidadKmph: parseFloat(lineArray[8].trim()),
|
velocidadKmph: parseFloat(lineArray[8].trim()),
|
||||||
direccionONose: parseFloat(lineArray[9].trim()),
|
direccionNorte: parseFloat(lineArray[9].trim()),
|
||||||
numSatelites: parseInt(lineArray[10].trim()),
|
numSatelites: parseInt(lineArray[10].trim()),
|
||||||
datetime: new Date(lineArray[11].trim().replace("Date/Time: ", ""))
|
datetimeGPS: new Date(lineArray[11].trim().replace("Date/Time: ", "")),
|
||||||
|
datetime: new Date().toISOString() // Obtenemos la fecha/hora actual
|
||||||
};
|
};
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error('Error al convertir los datos:', error);
|
console.error('Error al convertir los datos:', error);
|
||||||
@@ -44,8 +49,79 @@ async function sleep(ms) {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
const fechaHoraActual = new Date();
|
||||||
|
async function saveDataInFile(data) {
|
||||||
|
fs.appendFile(`logs/${fechaHoraActual.toISOString()}.json`, JSON.stringify(data) + ',\n', err => {
|
||||||
|
if (err) {
|
||||||
|
console.error(err);
|
||||||
|
} else {
|
||||||
|
//console.log('Datos guardados correctamente');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
saveDataInGeoJSONFile(data);
|
||||||
|
}
|
||||||
|
|
||||||
|
var geoJSONData = {
|
||||||
|
type: "FeatureCollection",
|
||||||
|
features: [
|
||||||
|
{
|
||||||
|
"type": "Feature",
|
||||||
|
"properties": {},
|
||||||
|
"geometry": {
|
||||||
|
"coordinates": [],
|
||||||
|
"type": "LineString"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
|
async function saveDataInGeoJSONFile(data) {
|
||||||
|
|
||||||
|
if (data.latitud === null || data.longitud === null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
geoJSONData.features.push({
|
||||||
|
type: "Feature",
|
||||||
|
properties: {
|
||||||
|
numPaquete: data.paquetes,
|
||||||
|
temperatura: data.temperatura
|
||||||
|
},
|
||||||
|
geometry: {
|
||||||
|
type: "Point",
|
||||||
|
coordinates: [data.longitud, data.latitud]
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
geoJSONData.features[0].geometry.coordinates.push([data.longitud, data.latitud]);
|
||||||
|
|
||||||
|
|
||||||
|
fs.writeFile('logs/' + fechaHoraActual.toISOString() + '.geojson', JSON.stringify(geoJSONData), err => {
|
||||||
|
if (err) {
|
||||||
|
console.error(err);
|
||||||
|
} else {
|
||||||
|
// file written successfully
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
saveDataInCSVFile("Nº Paquete; Temperatura; Presión; Altitud Según Presión; Latitud; Longitud; Altitud (m); Velocidad (Km/h); Dirección/Norte; Número de Satelites; Fecha/Hora GPS; Fecha/Hora del Sistema");
|
||||||
|
async function saveDataInCSVFile(data) {
|
||||||
|
fs.appendFile(`logs/${fechaHoraActual.toISOString()}.csv`, data + '\n', err => {
|
||||||
|
if (err) {
|
||||||
|
console.error(err);
|
||||||
|
} else {
|
||||||
|
//console.log('Datos guardados correctamente');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
// Exportamos las funciones para poder usarlas en otras partes del programa
|
// Exportamos las funciones para poder usarlas en otras partes del programa
|
||||||
export {
|
export {
|
||||||
dataLineToObject,
|
dataLineToObject,
|
||||||
sleep
|
sleep,
|
||||||
|
saveDataInFile
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user