Aggiunto collegamento al server
This commit is contained in:
78
plugin/tools/dataHub.js
Normal file
78
plugin/tools/dataHub.js
Normal file
@@ -0,0 +1,78 @@
|
||||
/**
|
||||
* dataHub.js - Cache centralizzata dei dati del plugin.
|
||||
*
|
||||
* Tutti i moduli (realtime, telegram, ecc.) leggono da qui.
|
||||
* I dati vengono scritti da:
|
||||
* - realtime/core.js → updateSensorData() (ogni 500ms)
|
||||
* - index.cjs → updateWeatherData() (ogni 5min)
|
||||
*
|
||||
* Nessuna duplicazione: i dati vengono raccolti UNA volta e condivisi.
|
||||
*/
|
||||
|
||||
let latestSensorData = null;
|
||||
let latestWeatherData = { forecast: null, sea: null };
|
||||
let lastSensorUpdate = 0;
|
||||
let lastWeatherUpdate = 0;
|
||||
|
||||
/**
|
||||
* Aggiorna lo snapshot dei dati sensore.
|
||||
* Chiamato da sendData() in core.js ogni 500ms.
|
||||
* @param {Object} data - Dati sensore flat (es. { wind_direction: 180, temperature: 22.5 })
|
||||
*/
|
||||
function updateSensorData(data) {
|
||||
latestSensorData = data ? { ...data } : null;
|
||||
lastSensorUpdate = Date.now();
|
||||
}
|
||||
|
||||
/**
|
||||
* Aggiorna lo snapshot dei dati meteo.
|
||||
* Chiamato da fetchAndPublishWeather() in index.cjs.
|
||||
* @param {Object|null} forecast - Dati previsioni (temperatura, vento, ecc.)
|
||||
* @param {Object|null} sea - Dati condizioni marine (onde, ecc.)
|
||||
*/
|
||||
function updateWeatherData(forecast, sea) {
|
||||
latestWeatherData = {
|
||||
forecast: forecast || null,
|
||||
sea: sea || null
|
||||
};
|
||||
lastWeatherUpdate = Date.now();
|
||||
}
|
||||
|
||||
/**
|
||||
* Legge l'ultimo snapshot dei dati sensore.
|
||||
* @returns {Object|null} Dati sensore o null se non ancora disponibili
|
||||
*/
|
||||
function getSensorData() {
|
||||
return latestSensorData;
|
||||
}
|
||||
|
||||
/**
|
||||
* Legge l'ultimo snapshot dei dati meteo.
|
||||
* @returns {{ forecast: Object|null, sea: Object|null }}
|
||||
*/
|
||||
function getWeatherData() {
|
||||
return latestWeatherData;
|
||||
}
|
||||
|
||||
/**
|
||||
* Legge tutti i dati disponibili (sensori + meteo) con timestamps.
|
||||
* @returns {{ sensors: Object|null, weather: Object, timestamps: Object }}
|
||||
*/
|
||||
function getAllData() {
|
||||
return {
|
||||
sensors: latestSensorData,
|
||||
weather: latestWeatherData,
|
||||
timestamps: {
|
||||
sensorUpdate: lastSensorUpdate,
|
||||
weatherUpdate: lastWeatherUpdate
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
updateSensorData,
|
||||
updateWeatherData,
|
||||
getSensorData,
|
||||
getWeatherData,
|
||||
getAllData
|
||||
};
|
||||
Reference in New Issue
Block a user