diff --git a/apps/owmweather/ChangeLog b/apps/owmweather/ChangeLog index 106948e6c..f80402e7d 100644 --- a/apps/owmweather/ChangeLog +++ b/apps/owmweather/ChangeLog @@ -2,3 +2,4 @@ 0.02: Do first update request 5s after boot to boot up faster 0.03: Fix updating weather too often 0.04: Minor code improvements +0.05: Upgrade OWM to One Call API 3.0. Add pressure to weather.json diff --git a/apps/owmweather/lib.js b/apps/owmweather/lib.js index 67cdc115b..bc5b37f76 100644 --- a/apps/owmweather/lib.js +++ b/apps/owmweather/lib.js @@ -1,19 +1,20 @@ function parseWeather(response) { let owmData = JSON.parse(response); - let isOwmData = owmData.coord && owmData.weather && owmData.main; + let isOwmData = (owmData.lat && owmData.lon) && owmData.current.weather && owmData.current; if (isOwmData) { let json = require("Storage").readJSON('weather.json') || {}; let weather = {}; weather.time = Date.now(); - weather.hum = owmData.main.humidity; - weather.temp = owmData.main.temp; - weather.code = owmData.weather[0].id; - weather.wdir = owmData.wind.deg; - weather.wind = owmData.wind.speed; - weather.loc = owmData.name; - weather.txt = owmData.weather[0].main; + weather.hum = owmData.current.humidity; + weather.temp = owmData.current.temp; + weather.code = owmData.current.weather[0].id; + weather.wdir = owmData.current.wind_deg; + weather.wind = owmData.current.wind_speed; + // weather.loc = owmData.name; + weather.txt = owmData.current.weather[0].main; + weather.hpa = owmData.current.pressure ? owmData.current.pressure : 0; if (weather.wdir != null) { let deg = weather.wdir; @@ -39,7 +40,7 @@ exports.pull = function(completionCallback) { "location": "London" }; let settings = require("Storage").readJSON("owmweather.json", 1); - let uri = "https://api.openweathermap.org/data/2.5/weather?lat=" + location.lat.toFixed(2) + "&lon=" + location.lon.toFixed(2) + "&exclude=hourly,daily&appid=" + settings.apikey; + let uri = "https://api.openweathermap.org/data/3.0/onecall?lat=" + location.lat.toFixed(2) + "&lon=" + location.lon.toFixed(2) + "&exclude=minutely,hourly,daily,alerts&appid=" + settings.apikey; if (Bangle.http){ Bangle.http(uri, {timeout:10000}).then(event => { let result = parseWeather(event.resp); diff --git a/apps/owmweather/metadata.json b/apps/owmweather/metadata.json index 658ea953e..d3f0400fa 100644 --- a/apps/owmweather/metadata.json +++ b/apps/owmweather/metadata.json @@ -1,7 +1,7 @@ { "id": "owmweather", "name": "OpenWeatherMap weather provider", "shortName":"OWM Weather", - "version": "0.04", + "version": "0.05", "description": "Pulls weather from OpenWeatherMap (OWM) API", "icon": "app.png", "type": "bootloader",