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 = 'ca82d3c964da82f54d033abf702a46a5';
|
|
|
|
var lat = Math.round(pos.coords.latitude*10) / 10;
|
|
var lon = Math.round(pos.coords.longitude*10) / 10;
|
|
|
|
// Construct URL
|
|
var url = 'http://api.openweathermap.org/data/2.5/weather?lat=' +
|
|
lat + '&lon=' + lon + '&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}
|
|
);
|
|
|
|
}
|
|
|
|
|
|
function getHomeTemp() {
|
|
|
|
var url = "https://raspi.goodcleanfun.de/cgi-bin/raspiweb.py?pwd=d3Vyc3RnZXNpY2h0&period=3";
|
|
|
|
console.log('Try to get room temp');
|
|
|
|
xhrRequest(url, 'POST',
|
|
function(responseText) {
|
|
// responseText contains a JSON object with weather info
|
|
var json = JSON.parse(responseText);
|
|
|
|
// Conditions
|
|
var room_temp = (Math.round(json.room[0]*10) / 10) + '°C @ home';
|
|
console.log('Room temp is ' + room_temp);
|
|
|
|
// Assemble dictionary using our keys
|
|
var dictionary = {
|
|
'KEY_ROOM_TEMP': room_temp
|
|
};
|
|
|
|
// Send to Pebble
|
|
Pebble.sendAppMessage(dictionary,
|
|
function(e) {
|
|
console.log('Room temp sent to Pebble successfully!');
|
|
},
|
|
function(e) {
|
|
console.log('Error sending room temp to Pebble!');
|
|
}
|
|
);
|
|
}
|
|
);
|
|
}
|
|
|
|
|
|
// Listen for when the watchface is opened
|
|
Pebble.addEventListener('ready',
|
|
function(e) {
|
|
console.log('PebbleKit JS ready!');
|
|
// Get the initial weather
|
|
getWeather();
|
|
getHomeTemp();
|
|
}
|
|
);
|
|
|
|
|
|
// Listen for when an AppMessage is received
|
|
Pebble.addEventListener('appmessage',
|
|
function(e) {
|
|
console.log('AppMessage received!');
|
|
getWeather();
|
|
getHomeTemp();
|
|
}
|
|
);
|