/** * Gestore centralizzato della configurazione del plugin. * Questa soluzione permette di leggere i valori di configurazione dinamicamente, * quindi cambiano in tempo reale quando l'utente li modifica dalle impostazioni del plugin. */ let pluginOptions = {}; /** * Inizializza il ConfigManager con le opzioni del plugin. * Deve essere chiamato all'avvio del plugin. * @param {Object} options - Le opzioni passate da Signal K al plugin */ function init(options) { pluginOptions = options || {}; console.log('[CONFIG] ConfigManager inizializzato'); } /** * Ottiene il Telegram Bot Token */ function getTelegramToken() { return process.env.TELEGRAM_BOT_TOKEN || ''; } /** * Ottiene il codice sensore */ function getSensorCode() { return pluginOptions.sensor_code || ''; } /** * Ottiene il nome sensore */ function getSensorName() { return pluginOptions.sensor_name || ''; } /** * Ottiene l'intervallo di invio dati (in millisecondi, converte da secondi) */ function getSendInterval() { const seconds = pluginOptions.sensor_interval || process.env.SEND_INTERVAL; return (typeof seconds === 'number' ? seconds : parseInt(seconds)) * 1000 || 60000; } /** * Ottiene il ritardo di riconnessione (in millisecondi, converte da secondi) */ function getReconnectDelay() { const seconds = pluginOptions.reconnect_delay || process.env.RECONNECT_DELAY; return (typeof seconds === 'number' ? seconds : parseInt(seconds)) * 1000 || 5000; } /** * Ottiene un valore di configurazione generico * @param {string} key - La chiave della configurazione * @param {*} defaultValue - Il valore di default */ function get(key, defaultValue = null) { return pluginOptions[key] !== undefined ? pluginOptions[key] : defaultValue; } module.exports = { init, getTelegramToken, getSensorCode, getSensorName, getSendInterval, getReconnectDelay, get };