// on{x} recipe for fastest route to work // created by jgaikwad@gmail.com // version 1 // last modified 6/5/2012 // define variables var time = "07:35 AM"; var wps = []; var fastestroute = ''; var route1Duration = ''; var route2Duration = ''; var route1Name = 'i635 route'; var route2Name = 'downtown route'; // get fastest route var getFastestRoute = function () { // first get route 1 wps[0] = '39.173773,-94.559544'; wps[1] = '39.037003,-94.682968'; feeds.traffic.get( {wps: wps, unittype: 'i'}, function(traffic, textStatus, response) { console.info('\n****The traffic warnings are for route2 ' + traffic.warnings[0]); // duration is given in seconds, modify to minutes route1Duration = traffic.totalTravelDuration/60; }, function(response, textStatus) { console.info('got error : ' + textStatus); } ); // then get route 2 wps[0] = '39.172709,-94.552313'; wps[1] = '39.037003,-94.682968'; feeds.traffic.get( {wps: wps, unittype: 'i'}, function(traffic, textStatus, response) { console.info('\n****The traffic warnings are for route1 ' + traffic.warnings[0]); // duration is given in seconds, modify to minutes route2Duration = traffic.totalTravelDuration/60; // compare route durations if (route1Duration < route2Duration) { fastestroute = route1Name; } else { fastestroute = route2Name; } // notify of fastest route var notification = device.notifications.createNotification('Traffic info'); notification.content = 'Fastest route=' + fastestroute; notification.show(); }, function(response, textStatus) { console.info('got error : ' + textStatus); } ); }; var parseTime = function (timeString) { if (timeString === '') { return null; } var time = timeString.match(/^(\d+)(:(\d\d))?\s*((a|(p))m?)?$/i); if (time === null) { return null; } var hours = parseInt(time[1], 10); if (hours === 12 && !time[6]) { hours = 0; } else { hours += (hours < 12 && time[6]) ? 12 : 0; } var d = new Date(); d.setHours(hours); d.setMinutes(parseInt(time[3], 10) || 0); d.setSeconds(0, 0); return d; }; // get the fastest route every day at the specified time var firstTime = parseTime(time); if (firstTime === null) { console.error('Invalid time format: ' + time + '. Expected: hh:mm or hh:mm AM/PM'); } else { var now = new Date(); if (firstTime.getTime() < now) { firstTime.setDate(firstTime.getDate() + 1); } console.info('Setting scheduled task to start at ' + firstTime); device.scheduler.setTimer({ name: 'dailyTrafficTimer', time: firstTime.getTime(), interval: 'day', repeat: true, exact: true }, getFastestRoute); }