====== Differences ====== This shows you the differences between two versions of the page.
| Next revision | Previous revision | ||
|
script_owm [2015/05/17 20:35] jappie created |
script_owm [2015/05/21 11:27] (current) jappie [OWM-load] improved timer |
||
|---|---|---|---|
| Line 1: | Line 1: | ||
| - | tbd | + | ===== About the script ====== |
| + | * Purpose : Get OpenWeather-data for given city. (current & next 10 days) | ||
| + | * - binds weather-data as json to .self and binding-variables. | ||
| + | * - refreshes every: data_refresh_interval_minutes | ||
| + | * Author : Jappie Toutenhoofd (https://plus.google.com/+JappieToutenhoofd) | ||
| + | * Link : https://plus.google.com/+JappieToutenhoofd/posts/ | ||
| + | ====== Script code ====== | ||
| + | ======= OWM-load ======= | ||
| <code> | <code> | ||
| + | var data_refresh_interval_minutes = 60; | ||
| + | if ( self.APIcomm == null) | ||
| + | {var api_script = LL.getScriptByName("APIcomm"); | ||
| + | if (api_script == null) | ||
| + | { alert( "Also import script 'APIcomm'. \n This script depends on it."); return;} | ||
| + | LL.runScript('APIcomm', null); | ||
| + | } | ||
| + | if (self.owm == null) | ||
| + | {self.owm = {}; | ||
| + | self.owm.req = {}; | ||
| + | self.owm.last = 0; | ||
| + | self.owm.timer = 0; | ||
| + | } | ||
| + | //api.openweathermap.org/data/2.5 | ||
| + | |||
| + | var Req1 = "http://api.openweathermap.org/data/2.5/"; | ||
| + | var Req2 = "?q=hoofddorp,nl"; // <-- your city,land here !! | ||
| + | Req2 += "&units=metric"; // or imperial | ||
| + | Req2 += "&lang=nl"; // or other country code for language | ||
| + | Req2 += "&APPID=59a20bd1ce89c6599758a2a0aeae9423"; | ||
| + | |||
| + | self.owm.req.current = Req1 + "weather" + Req2; | ||
| + | self.owm.req.forcast = Req1 + "forecast/daily" + Req2 + "&cnt=10"; | ||
| + | |||
| + | self.owm.days = ["Zo","Ma","Di","Wo","Do","Vr","Za"]; | ||
| + | |||
| + | |||
| + | function refreshOWM() | ||
| + | { // prevent event flouding | ||
| + | var nu = new Date(); | ||
| + | if ((nu - self.owm.last) > (data_refresh_interval_minutes *60000)) | ||
| + | { | ||
| + | var repl = self.APIcomm(self.owm.req.current); | ||
| + | if (repl == null){return;}; | ||
| + | self.owm.current = JSON.parse(repl); | ||
| + | LL.setVariableString("owm", repl); | ||
| + | |||
| + | var repl = self.APIcomm(self.owm.req.forcast); | ||
| + | if (repl == null){return;}; | ||
| + | self.owm.forcast = JSON.parse(repl); | ||
| + | } | ||
| + | self.owm.timer = setTimeout(refreshOWM, 600000); | ||
| + | } | ||
| + | |||
| + | clearTimeout(self.owm.timer); | ||
| + | |||
| + | refreshOWM(); | ||
| </code> | </code> | ||
| + | ======= OWM-example ======= | ||
| + | <code> | ||
| + | if (self.owm == null) | ||
| + | { var owm_script = LL.getScriptByName("OWM-load"); | ||
| + | if (owm_script == null) | ||
| + | { alert( "Also import script 'OWM-load'. \n This script depends on it."); | ||
| + | return; | ||
| + | }; | ||
| + | LL.runScript('OWM-load', null); | ||
| + | }; | ||
| + | if (self.owm.current == null) | ||
| + | { LL.runScript('OWM-load', null); | ||
| + | alert("Weather data requested, \n Tap again to update."); | ||
| + | return; | ||
| + | }; | ||
| + | |||
| + | var i = LL.getEvent().getItem(); | ||
| + | var t = self.owm.current.main.temp.toFixed(1); | ||
| + | var c = self.owm.current.weather[0].id; | ||
| + | var ofset = 60000; | ||
| + | if (self.owm.current.dt < self.owm.current.sys.sunrise) | ||
| + | {ofset += 1000 } | ||
| + | if (self.owm.current.dt > self.owm.current.sys.sunset) | ||
| + | {ofset += 1000 } | ||
| + | var s=String.fromCharCode(ofset + c); | ||
| + | var d = self.owm.current.weather[0].description; | ||
| + | var w = parseInt(self.owm.current.wind.deg); | ||
| + | i.setLabel(w + " " + t + "C "+ s +" " + d,true); | ||
| + | | ||
| + | alert("last updated: " + new Date(1000 * self.owm.current.dt)); | ||
| + | alert(JSON.stringify( self.owm.current)); | ||
| + | alert(JSON.stringify( self.owm.forcast)); | ||
| + | |||
| + | var test = new Date(1000 * self.owm.forcast.list[9].dt); | ||
| + | alert( "in 9 days it is: " + self.owm.days[test.getDay()] + " " + test.getDate() + " and " + self.owm.forcast.list[9].weather[0].main ); | ||
| + | |||
| + | </code> | ||