Aggiunto collegamento al server
This commit is contained in:
63
plugin/routes/forecasts.js
Normal file
63
plugin/routes/forecasts.js
Normal file
@@ -0,0 +1,63 @@
|
||||
const { getForecast, getSeaConditions } = require("../api_models/openmeteo.js");
|
||||
|
||||
/**
|
||||
* Registers forecast-related routes.
|
||||
* @param {Object} router - Route wrapper with get/post methods
|
||||
* @param {Object} app - SignalK app instance
|
||||
*/
|
||||
function registerForecastRoutes(router, app) {
|
||||
// Get current forecast data directly from OpenMeteo
|
||||
router.get("/forecasts/data", async (req, res) => {
|
||||
try {
|
||||
const position = app.getSelfPath('navigation.position')?.value;
|
||||
|
||||
if (!position?.latitude || !position?.longitude) {
|
||||
return res.status(503).json({ error: "Position not available" });
|
||||
}
|
||||
|
||||
const mode = req.query.mode || 'both';
|
||||
const [forecastData, wavesData] = await Promise.all([
|
||||
getForecast(position, { mode }),
|
||||
getSeaConditions(position, { mode })
|
||||
]);
|
||||
|
||||
res.status(200).json({
|
||||
forecast: forecastData,
|
||||
sea: wavesData
|
||||
});
|
||||
} catch (error) {
|
||||
console.error('[MEB] Error in /meb/forecasts/data:', error);
|
||||
res.status(500).json({ error: error.message });
|
||||
}
|
||||
});
|
||||
|
||||
// Force update: fetch fresh hourly data from OpenMeteo
|
||||
router.post("/forecasts/update", async (req, res) => {
|
||||
try {
|
||||
const position = app.getSelfPath('navigation.position')?.value;
|
||||
|
||||
if (!position?.latitude || !position?.longitude) {
|
||||
return res.status(503).json({ error: "Position not available" });
|
||||
}
|
||||
|
||||
const [forecastData, wavesData] = await Promise.all([
|
||||
getForecast(position, { mode: 'both' }),
|
||||
getSeaConditions(position, { mode: 'both' })
|
||||
]);
|
||||
|
||||
if (!forecastData?.hourly || !wavesData?.hourly) {
|
||||
return res.status(500).json({ error: "Hourly data not available from API" });
|
||||
}
|
||||
|
||||
res.status(200).json({
|
||||
forecast: forecastData,
|
||||
sea: wavesData
|
||||
});
|
||||
} catch (error) {
|
||||
console.error('[MEB] Error in /meb/forecasts/update:', error);
|
||||
res.status(500).json({ error: error.message });
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
module.exports = registerForecastRoutes;
|
||||
Reference in New Issue
Block a user