var xhrRequest = function (url, type, callback) { var xhr = new XMLHttpRequest(); xhr.onload = function () { callback(this.responseText); }; xhr.open(type, url); xhr.send(); }; function locationSuccess(pos) { // generic API key, has to be replaced by developers one var api_key = 'bd82977b86bf27fb59a04b61b657fb6f'; // Construct URL var url = 'http://api.openweathermap.org/data/2.5/weather?lat=' + pos.coords.latitude + '&lon=' + pos.coords.longitude + '&APPID=' + api_key; // Send request to OpenWeatherMap xhrRequest(url, 'GET', function(responseText) { // responseText contains a JSON object with weather info var json = JSON.parse(responseText); // Temperature in Kelvin requires adjustment var temperature = Math.round(json.main.temp - 273.15); console.log('Temperature is ' + temperature); // Conditions var conditions = json.weather[0].main; console.log('Conditions are ' + conditions); // Assemble dictionary using our keys var dictionary = { 'KEY_TEMPERATURE': temperature, 'KEY_CONDITIONS': conditions }; // Send to Pebble Pebble.sendAppMessage(dictionary, function(e) { console.log('Weather info sent to Pebble successfully!'); }, function(e) { console.log('Error sending weather info to Pebble!'); } ); } ); } function locationError(err) { console.log('Error requesting location!'); } function getWeather() { navigator.geolocation.getCurrentPosition( locationSuccess, locationError, {timeout: 15000, maximumAge: 60000} ); } // Listen for when the watchface is opened Pebble.addEventListener('ready', function(e) { console.log('PebbleKit JS ready!'); // Get the initial weather getWeather(); } ); // Listen for when an AppMessage is received Pebble.addEventListener('appmessage', function(e) { console.log('AppMessage received!'); getWeather(); } );