// Конфигурация шлюза из окружения. Адаптер активен только если задан его источник; // иначе раздел работает на демо-данных (fallback). Так шлюз поднимается сразу, // а реальные источники «зажигаются» по мере готовности их стеков. const env = process.env; export const config = { port: Number(env.PORT || 4100), jwtSecret: env.JWT_SECRET || 'dev-secret-change-me', dataDir: env.DATA_DIR || '/data', // персист арендаторов/привязок устройств traccar: env.TRACCAR_URL ? { url: env.TRACCAR_URL, token: env.TRACCAR_TOKEN || '', user: env.TRACCAR_USER || '', pass: env.TRACCAR_PASS || '' } : null, mqtt: env.MQTT_URL ? { url: env.MQTT_URL, username: env.MQTT_USER || undefined, password: env.MQTT_PASS || undefined, prefix: env.MQTT_PREFIX || '/devices' } : null, influx: env.INFLUX_URL ? { url: env.INFLUX_URL, token: env.INFLUX_TOKEN || '', org: env.INFLUX_ORG || '', bucket: env.INFLUX_BUCKET || 'energy' } : null, // Яндекс ID (OAuth). Активен при YANDEX_CLIENT_ID. Регистрация: oauth.yandex.ru. yandex: env.YANDEX_CLIENT_ID ? { clientId: env.YANDEX_CLIENT_ID, secret: env.YANDEX_CLIENT_SECRET || '', redirect: env.YANDEX_REDIRECT || 'https://monitor.servaki.online/api/auth/yandex/callback', admins: (env.YANDEX_ADMINS || '').split(',').map((s) => s.trim().toLowerCase()).filter(Boolean), } : null, }; export const sources = { traccar: !!config.traccar, wirenboard: !!config.mqtt, influx: !!config.influx, };