Время пути до работы
Модератор: immortal
- webms
- Сообщения: 498
- Зарегистрирован: Чт дек 15, 2016 3:13 am
- Благодарил (а): 221 раз
- Поблагодарили: 88 раз
Время пути до работы
Было бы здорово утром пока чищу зубы услышать сколько мне ехать на работу.
Например сценарий:
Открываю дверь ванны, срабатывает датчик и Алиса говорит: Доброе утро Максим, сегодня путь до работы займет дольше обычного на 15 мин. Время пути приблизительно 58 минут. На улице гололед, погода минус 16 и....."
Мб у кого-то уже так реализовано?
Если нет, давайте попробуем вместе, здорово же будет
PS: Где то в коннекте я видел скрипт, но он не заработал у меня =( автор не ответил на сообщение.
UPDATE: Готовый код https://majordomo.smartliving.ru/forum/ ... =10#p71161
Например сценарий:
Открываю дверь ванны, срабатывает датчик и Алиса говорит: Доброе утро Максим, сегодня путь до работы займет дольше обычного на 15 мин. Время пути приблизительно 58 минут. На улице гололед, погода минус 16 и....."
Мб у кого-то уже так реализовано?
Если нет, давайте попробуем вместе, здорово же будет
PS: Где то в коннекте я видел скрипт, но он не заработал у меня =( автор не ответил на сообщение.
UPDATE: Готовый код https://majordomo.smartliving.ru/forum/ ... =10#p71161
Последний раз редактировалось webms Чт фев 08, 2018 3:07 pm, всего редактировалось 1 раз.
- webms
- Сообщения: 498
- Зарегистрирован: Чт дек 15, 2016 3:13 am
- Благодарил (а): 221 раз
- Поблагодарили: 88 раз
Re: Время пути до работы
Нашел
Пользователь: https://majordomo.smartliving.ru/forum/ ... file&u=506
Код: Выделить всё
$from = gg('home.adress');
$to = gg('work.adress');;
$route = getDurationInGoogle($from, $to);
$res = '';
$duration = $route['in_traffic'] - $route['duration'];
if ($duration > 0) {
$res .= 'Путь от дома до работы, c учетом пробок займет примерно ' . chti($route['in_traffic'], 'минута', 'минуты', 'минут') . '. ';
$res .= 'Что на ' . chti($duration, 'минута', 'минуты', 'минут') . ' дольше обычного.';
if ($duration > 10) {
$res .= ' Лучше пойти пешком!';
}
} else {
$res .= 'Путь от дома до работы займет примерно ' . chti($route['duration'], 'минута', 'минуты', 'минут') . '.';
}
say($res);
- slgeo
- Сообщения: 551
- Зарегистрирован: Чт фев 05, 2015 2:35 pm
- Откуда: РнД
- Благодарил (а): 139 раз
- Поблагодарили: 74 раза
Re: Время пути до работы
В идеале, конечно, лучше Яндекс-пробки учитывать, но там по словам nickmail затык и так просто не выдернуть.
Ну, и самое главное по коду выше - не хватает функции getDurationInGoogle
Ну, и самое главное по коду выше - не хватает функции getDurationInGoogle
Raspberry Pi2 Model B + NRF24L01 (MySensors) + 1-Wire + Esp8266 (WiFi-IoT)
CONNECT
CONNECT
-
- Сообщения: 18
- Зарегистрирован: Вт сен 15, 2015 11:37 am
- Благодарил (а): 9 раз
- Поблагодарили: 12 раз
Re: Время пути до работы
Немного переделанный скрипт геокодер от directman66, за что ему спасибо.
Гугл карты
$url привести к виду одной строки
Получить ключ можно : https://developers.google.com/maps/docu ... -key?hl=ru
Продолжительность маршрута с учетом дорожной обстановки (duration_in_traffic) будет отображаться только если есть валидный апи ключ.
Если ключа нету, тогда удалите "&key=".$api_key".
Ссылка будет : $URL = "https://maps.googleapis.com/maps/api/di ... anguage=ru";
Подробнее о параметрах можно почитаться тут: https://developers.google.com/maps/docu ... ntro?hl=ru
Гугл карты
Код: Выделить всё
$from="";//Откуда, можно координаты или название улицы
$to="";//Куда, можно координаты или название улицы
$start_time="now";// Время отправления, можно использовать now, время как целое число в секундах с полуночи 1 января 1970 г. по UTC
//$api_key=""; апи ключ гугл
$URL = "https://maps.googleapis.com/maps/api/directions/json?origin=".$from."&destination=".$to."&departure_time=".$start_time."&trafficmodel=bestguess&mode=driving&language=ru&key=".$api_key;
$data = getUrl( $URL );
$json = json_decode( $data );
$distance = $json->routes[0]->legs[0]->distance->text;// Расстояние
$duration = $json->routes[0]->legs[0]->duration->text;// Продолжительность маршрута
//$duration_in_traffic=$json->routes[0]->legs[0]->duration_in_traffic->text; Продолжительность маршрута с учетом дорожной обстановки
sayReply($distance);
sayReply($duration);
//sayReply($duration_in_traffic);
Получить ключ можно : https://developers.google.com/maps/docu ... -key?hl=ru
Продолжительность маршрута с учетом дорожной обстановки (duration_in_traffic) будет отображаться только если есть валидный апи ключ.
Если ключа нету, тогда удалите "&key=".$api_key".
Ссылка будет : $URL = "https://maps.googleapis.com/maps/api/di ... anguage=ru";
Подробнее о параметрах можно почитаться тут: https://developers.google.com/maps/docu ... ntro?hl=ru
- За это сообщение автора igoryan поблагодарили (всего 3):
- slgeo (Сб фев 03, 2018 1:29 am) • webms (Пн фев 05, 2018 8:11 am) • directman66 (Чт фев 08, 2018 11:50 am)
- Рейтинг: 3.49%
- slgeo
- Сообщения: 551
- Зарегистрирован: Чт фев 05, 2015 2:35 pm
- Откуда: РнД
- Благодарил (а): 139 раз
- Поблагодарили: 74 раза
Re: Время пути до работы
Подскажите, как достать значение summary из такого ответа:
СпойлерПоказать
Код: Выделить всё
{
"routes" : [
{
"bounds" : {
"northeast" : {
"lat" : 55.79283659999999,
"lng" : 49.2216592
},
"southwest" : {
"lat" : 55.73007759999999,
"lng" : 49.1309371
}
},
"copyrights" : "Картографические данные © 2014 Google",
"legs" : [ ],
"overview_polyline" : {
"points" : "qffsIk{zjHEwKpKcAvGo@bFk@bGg@vFg@hEIxFQHcTL{a@FkCF_AFm@L_@Zs@Pa@f@cB|@gDb@aBbAuDrByIrAqIhB{LTaDFoA?uAK_B]gEe@oEKk@]]}@u@AGCIEEkEsCgAy@o@o@mBwBmCyCyAaBSQiAg@iBq@aAWmGaA_AKUFm@MiACU@i@Jj@sAVW^YbAs@T_@Nq@?_@Eu@g@iCuBcHq@yCIy@Aq@Fq@He@nCmGhC{FnGcNbA}BNa@TeAPqAZmDzBiWJ}@Da@cA_CiFmLc@aAkBkEqBiEcP__@oHmPaE}IgD}HaCiFcGyM}H{PcFeLyKqV_BuDyA}CaCqF{HgQsCuGyAiDsAoCk@cAe@u@iAmAq@k@m@]aA_@oA]m@IuCK_C@yMGwUO_M@{B?yUSuEAqG?aD@cM@qFDoFEs@?iPGiDEgA?yAEoFAoDCo@?mGEmGE_JEsGAq@BaCHsAJKqAHcBn@HEsDBADEJ]FIPEZ?LJTB"
},
"summary" : "пр. Победы",
"warnings" : [],
"waypoint_order" : []
}
],
"status" : "OK"
}
Raspberry Pi2 Model B + NRF24L01 (MySensors) + 1-Wire + Esp8266 (WiFi-IoT)
CONNECT
CONNECT
-
- Сообщения: 18
- Зарегистрирован: Вт сен 15, 2015 11:37 am
- Благодарил (а): 9 раз
- Поблагодарили: 12 раз
Re: Время пути до работы
Если из кода выше, то :
Код: Выделить всё
$summary=$json->routes[0]->summary;
- Рейтинг: 1.16%
- slgeo
- Сообщения: 551
- Зарегистрирован: Чт фев 05, 2015 2:35 pm
- Откуда: РнД
- Благодарил (а): 139 раз
- Поблагодарили: 74 раза
Re: Время пути до работы
Спасибо, точно утро вечера мудренее.igoryan писал(а):Если из кода выше, то :Код: Выделить всё
$summary=$json->routes[0]->summary;
Raspberry Pi2 Model B + NRF24L01 (MySensors) + 1-Wire + Esp8266 (WiFi-IoT)
CONNECT
CONNECT
- slgeo
- Сообщения: 551
- Зарегистрирован: Чт фев 05, 2015 2:35 pm
- Откуда: РнД
- Благодарил (а): 139 раз
- Поблагодарили: 74 раза
Re: Время пути до работы
Чуть допилил скрипт для работы с шаблонами:
Создаем скрипт GetRouteToAddress с кодом:
Ну, и сам код шаблона
Создаем скрипт GetRouteToAddress с кодом:
Код: Выделить всё
$from=<сюда вбиваем адрес дома или постоянное место отправления>; //координаты или название улицы, вместо пробелов ставим %20
$to=gg("admin.GEO_toAddress"); // в свойство объекта будем сохранять адрес куда едем
if ($to == "работы") {
$to=<сюда вбиваем адрес работы>;//Куда, вместо пробелов ставим %20
}
else
{
$to = $to."<желательно дополнить названием города и области/края>";
// подменяем пробелы, иначе не обрабатывается
$to = str_replace(' ','%20',$to);
}
$start_time="now";// Время отправления, можно использовать now, время как целое число в секундах с полуночи 1 января 1970 г. по UTC
$api_key=gg("admin.GEO_api_key"); //апи ключ гугл желательно хранить в свойстве объекта, а не в коде
$URL = "https://maps.googleapis.com/maps/api/directions/json?origin=".$from."&destination=".$to."&departure_time=".$start_time."&trafficmodel=bestguess&mode=driving&language=ru&key=".$api_key;
$data = getUrl( $URL );
$json = json_decode( $data );
$distance = $json->routes[0]->legs[0]->distance->text;// Расстояние
sg("admin.GEO_distance",$distance);
$duration = $json->routes[0]->legs[0]->duration->text;// Продолжительность маршрута
sg("admin.GEO_duration",$duration);
$duration_in_traffic=$json->routes[0]->legs[0]->duration_in_traffic->text; //Продолжительность маршрута с учетом дорожной обстановки
sg("admin.GEO_duration_in_traffic",$duration_in_traffic);
//$summary = $json->routes[0]->summary[0]->text;// Ключевая точка маршрута
$summary=$json->routes[0]->summary;
DebMes("Маршрут до ".gg("admin.GEO_toAddress"));
DebMes("Расстояние ".$distance);
DebMes("Конечный адрес ".$json->routes[0]->legs[0]->end_address);
DebMes("Через - ".$summary); // все DebMes после отладки можно закомментировать
say("Маршрут с учетом пробок до ".gg("admin.GEO_toAddress")." займет ".$duration_in_traffic." через ".$summary,1);
Маршрут до(.+)|Поехали на(.+)
Код: Выделить всё
sg("admin.GEO_toAddress",trim($matches[1]));
RunScript("GetRouteToAddress");
- Рейтинг: 3.49%
Raspberry Pi2 Model B + NRF24L01 (MySensors) + 1-Wire + Esp8266 (WiFi-IoT)
CONNECT
CONNECT
-
- Сообщения: 217
- Зарегистрирован: Вт июл 21, 2015 4:59 pm
- Откуда: Москва
- Благодарил (а): 56 раз
- Поблагодарили: 1 раз
Re: Время пути до работы
хотел что-то подобное
причём в виде графика
Например, если выехать в 6-30, то время до работы будет составлять столько-то
потом в 6-35 и так далее
причём в виде графика
Например, если выехать в 6-30, то время до работы будет составлять столько-то
потом в 6-35 и так далее
MDM Raspberry Pi 3b, esp32, ModBUS, esp8266, NooLite(MTRF-64-USB, SU-1-***, SLF-1-300, PM112, радиопульты PU)