var username; var password; var server; var sid; var status; function get_status() { var response; sid=""; console.log('---- authenticate'); var username=localStorage.getItem('username'); var password=localStorage.getItem('password'); var server=localStorage.getItem('server'); var url = server + "/webapi/auth.cgi?api=SYNO.API.Auth&method=Login&version=2&account="+username+"&passwd="+password+"&session=SurveillanceStation&format=sid"; var xhr = new XMLHttpRequest(); xhr.open("GET", url,false); xhr.send(); if(xhr.status == 200) { response = JSON.parse(xhr.responseText); if (response.success == true){ sid = response.data.sid; } }else { console.log('------Request returned error code ' + xhr.status.toString()); } if (sid != ""){ status = ""; console.log('---- get_status'); url = server + "/webapi/entry.cgi?api=SYNO.SurveillanceStation.HomeMode&version=1&method=GetInfo&_sid="+sid; xhr.open("GET", url,false); xhr.send(); if(xhr.status == 200) { response = JSON.parse(xhr.responseText); if (response.success == true){ status=response.data.on; var message; switch (status) { case true: message = "Your Home mode is ON"; break; case false: message = "Your Home mode is OFF"; break; default: message = "home mode is unknown !"; } // Build message var dict = { 'status': message, }; // Send the message Pebble.sendAppMessage(dict, function(e) { console.log('sent'); }, function() { console.log('failed'); }); } }else { console.log('------Request returned error code ' + xhr.status.toString()); } } } function switch_home(bool) { var response; sid=""; console.log('---- authenticate'); var username=localStorage.getItem('username'); var password=localStorage.getItem('password'); var server=localStorage.getItem('server'); var url = server + "/webapi/auth.cgi?api=SYNO.API.Auth&method=Login&version=2&account="+username+"&passwd="+password+"&session=SurveillanceStation&format=sid"; var xhr = new XMLHttpRequest(); xhr.open("GET", url,false); xhr.send(); if(xhr.status == 200) { response = JSON.parse(xhr.responseText); if (response.success == true){ sid = response.data.sid; console.log('------ sid = '+sid); } }else { console.log('------Request returned error code ' + xhr.status.toString()); } if (sid != ""){ status = ""; console.log('---- get_status'); url = server + "/webapi/entry.cgi?api=SYNO.SurveillanceStation.HomeMode&version=1&method=GetInfo&_sid="+sid; xhr.open("GET", url,false); xhr.send(); if(xhr.status == 200) { response = JSON.parse(xhr.responseText); if (response.success == true){ status=response.data.on; console.log('------ status:'+status); var message; var dict; if ( status != bool){ console.log('---- switching home mode to '+ bool); url = server + "/webapi/entry.cgi?api=SYNO.SurveillanceStation.HomeMode&version=1&method=Switch&on="+bool+"&_sid="+sid; xhr.open("GET", url,false); xhr.send(); if(xhr.status == 200) { response = JSON.parse(xhr.responseText); if (response.success == true){ status=bool; switch (status) { case true: message = "You just set Home mode ON"; break; case false: message = "You just set Home mode off"; break; default: message = "something happened, try again !"; } // Build message dict = { 'status': message, }; // Send the message Pebble.sendAppMessage(dict, function(e) { console.log('sent'); }, function() { console.log('failed'); }); } }else { console.log('------Request returned error code ' + xhr.status.toString()); } }else{ console.log('---- nothign to do, status already '+status); switch (status) { case true: message = "Your Home Mode is already ON"; break; case false: message = "Your Home Mode is already off"; break; default: message = "something happened, try again !"; } // Build message dict = { 'status': message, }; // Send the message Pebble.sendAppMessage(dict, function(e) { console.log('sent'); }, function() { console.log('failed'); }); } } }else { console.log('------Request returned error code ' + xhr.status.toString()); } } } // Get AppMessage events Pebble.addEventListener('appmessage', function(e) { // Get the dictionary from the message var dict = e.payload; switch (dict[0]) { case 'get': get_status(); break; case 'home_on': switch_home(true); break; case 'home_off': switch_home(false); break; default: console.log('Sorry.'); } }); // Get Configuration page Pebble.addEventListener('showConfiguration', function() { var username=localStorage.getItem('username'); var password=localStorage.getItem('password'); var server=localStorage.getItem('server'); var url = 'https://jonget.fr/pebble/config_homeswitch.php?username='+username+'&password='+password+'&server='+server; Pebble.openURL(url); }); Pebble.addEventListener('webviewclosed', function(e) { // Decode the user's preferences var configData = JSON.parse(decodeURIComponent(e.response)); localStorage.setItem('username',configData.username); localStorage.setItem('password',configData.password); localStorage.setItem('server',configData.server); console.log('---- new username stored : '+localStorage.getItem('username')); console.log('---- new password stored : '+localStorage.getItem('password')); console.log('---- new server stored : '+localStorage.getItem('server')); var dict = { 'username': configData.username, 'password': configData.password, 'server': configData.server }; // Send the message Pebble.sendAppMessage(dict, function(e) { console.log('sent'); }, function() { console.log('failed'); }); });