diff --git a/defaultmodules/weather/providers/weathergov.js b/defaultmodules/weather/providers/weathergov.js index e5fdb3f73e..c0e7b072e9 100644 --- a/defaultmodules/weather/providers/weathergov.js +++ b/defaultmodules/weather/providers/weathergov.js @@ -238,7 +238,7 @@ class WeatherGovProvider extends WeatherProvider { current.date = new Date(currentWeatherData.timestamp); current.temperature = currentWeatherData.temperature.value; - current.windSpeed = currentWeatherData.windSpeed.value; // Observations are already in m/s + current.windSpeed = convertKmhToMs(currentWeatherData.windSpeed.value); // Observations are in km/h current.windFromDirection = currentWeatherData.windDirection.value; current.minTemperature = currentWeatherData.minTemperatureLast24Hours?.value; current.maxTemperature = currentWeatherData.maxTemperatureLast24Hours?.value; diff --git a/tests/unit/modules/default/weather/providers/weathergov_spec.js b/tests/unit/modules/default/weather/providers/weathergov_spec.js index 6326a7fa4b..5a7fbe7cc2 100644 --- a/tests/unit/modules/default/weather/providers/weathergov_spec.js +++ b/tests/unit/modules/default/weather/providers/weathergov_spec.js @@ -155,6 +155,34 @@ describe("WeatherGovProvider", () => { expect(result.weatherType).not.toBeNull(); }); + it("should convert observed wind speed from km/h to m/s", async () => { + const provider = new WeatherGovProvider({ + lat: 40.71, + lon: -74.0, + type: "current" + }); + + const dataPromise = new Promise((resolve) => { + provider.setCallbacks(resolve, vi.fn()); + }); + + const observation = structuredClone(currentData); + observation.properties.windSpeed.value = 36; + + server.use( + http.get(WEATHERGOV_CURRENT_URL, () => { + return HttpResponse.json(observation); + }) + ); + + await provider.initialize(); + provider.start(); + + const result = await dataPromise; + + expect(result.windSpeed).toBeCloseTo(10); + }); + it("should use heat index or wind chill for feels like temperature", async () => { const provider = new WeatherGovProvider({ lat: 40.71,