You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

132 lines
2.9 KiB

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();
}
);