Определение ближайшего рейса общественного транспорта

Всё, что не подходит под вышеперечисленные разделы

Модератор: immortal

Ответить
ученик
Сообщения: 230
Зарегистрирован: Чт фев 12, 2015 2:34 pm
Благодарил (а): 36 раз
Поблагодарили: 6 раз

Определение ближайшего рейса общественного транспорта

Сообщение ученик » Пт сен 08, 2017 9:02 pm

Решил добавить обязанности Алисе,определять, когда на остановку подъедет общ транспорт.
Хватило знаниев, написать небольшой код.
Пока для одного транспорта и в будний день.

Код: Выделить всё

<?php
$now = time(); // узнаем время
// определение выходного дня  
$wd=0;
$d= date('w' );
if ($d >= 6 ) {
    $wd=1;
}
$rasp = array(
"05:32",
"05:47",
"06:02",
"06:17",
"06:32",
"06:43",
"06:54",
"07:06",
"07:17",
"07:28",
"07:40",
"07:51",
"08:02",
"08:14",
"08:25",
"08:36",
"08:48",
"08:59",
"09:17",
"09:35",
"09:53",
"10:08",
"10:30",
"10:53",
"11:09",
"11:24",
"11:39",
"11:54",
"12:09",
"12:24",
"12:39",
"12:54",
"13:09",
"13:21",
"13:33",
"13:44",
"13:56",
"14:08",
"14:20",
"14:33",
"14:44",
"14:55",
"15:06",
"15:16",
"15:26",
"15:36",
"15:47",
"15:58",
"16:10",
"16:22",
"16:34",
"16:46",
"16:58",
"17:10",
"17:23",
"17:36",
"17:51",
"18:06",
"18:22",
"18:38",
"18:55",
"19:12",
"19:28",
"19:44",
"19:59",
"20:14",
"20:29",
"20:44",
"20:59",
"21:14",
"21:29",
"21:44",
"22:00",
"22:16",
"22:32",
"22:48",
"23:05",
"23:22",
"23:42",
"00:02"
); // расписание через остановку  
foreach ($rasp as $test) {
    $timestamp = strtotime($test);
    if ($now >= $timestamp) {
        $ravno= (($now - $timestamp )/60) ;
           if ($ravno>=5 && $ravno<=45) {  // проверяем интервал от 5 мин до 45 мин 
        echo (int)$ravno. "\n"; // пишем результат
                }
        
        }
}
?>

Пока только пишет, через какое время будет транспорт
Теперь вопрос как дать данные Алисе?
Если только Переменную, то Алиса скажет последнюю
и как увеличить количество транспорта ?
server i5, OS-Ubuntu Server 16., 1-wire
php 7, AMS,broadlink rm2,rm3 mini.
Аватара пользователя
Gelezako
Сообщения: 963
Зарегистрирован: Чт июн 02, 2016 9:33 pm
Благодарил (а): 205 раз
Поблагодарили: 106 раз
Контактная информация:

Re: Определение ближайшего рейса общественного транспорта

Сообщение Gelezako » Пт сен 15, 2017 4:23 pm

запустил твой скрипн в 16 часов, вывело

Код: Выделить всё

42 32 21 10
Вопрос: как понять через какое время будет транспорт? :)
Теперь вопрос как дать данные Алисе?
Если только Переменную, то Алиса скажет последнюю
думаю это потому что ты цифры выводишь в цикле, попробуй присваивать данные к переменной, и выводить один раз вне цикла.

Код: Выделить всё

....
$result="";
foreach ($rasp as $test) {
    $timestamp = strtotime($test);
    if ($now >= $timestamp) {
        $ravno= (($now - $timestamp )/60) ;
           if ($ravno>=5 && $ravno<=45) {  // проверяем интервал от 5 мин до 45 мин 
$result=$result." ".$ravno;
                }
        
        }
}

echo $result; 
За это сообщение автора Gelezako поблагодарил:
ученик (Пт сен 15, 2017 6:45 pm)
Рейтинг: 1.16%
фанат Мажордомо
тематический блог http://blog.gelezako.com
плейлист про Мажордомо на ютубе https://www.youtube.com/playlist?list=P ... EdBGtX084E
ученик
Сообщения: 230
Зарегистрирован: Чт фев 12, 2015 2:34 pm
Благодарил (а): 36 раз
Поблагодарили: 6 раз

Re: Определение ближайшего рейса общественного транспорта

Сообщение ученик » Пт сен 15, 2017 6:22 pm

Gelezako писал(а):запустил твой скрипн в 16 часов, вывело

Код: Выделить всё

42 32 21 10
Вопрос: как понять через какое время будет транспорт? :)
через 42 мин , 32 мин, 21 мин, 10 мин.
думаю это потому что ты цифры выводишь в цикле, попробуй присваивать данные к переменной, и выводить один раз вне цикла.
Я примерно понял, как делать
в тело цикла ввести типа такой строки
$perem [] =(int) $ravno;// присваиваем значение целого числа к массиву
$i++; // считаем сколько данных в массиве
а потом, Алисе выдавать.
типа say ("Ближайший автобус номер ". '$nom',. "будет через". '$perem[$i]'. "минут" );
тут цикл организовывать или условие необходимо вписать чтобы написало количество рейсов в данный промежуток.
Так же пока думаю как другие рейсы вписать и учитывать расписание в выходные дни
server i5, OS-Ubuntu Server 16., 1-wire
php 7, AMS,broadlink rm2,rm3 mini.
ученик
Сообщения: 230
Зарегистрирован: Чт фев 12, 2015 2:34 pm
Благодарил (а): 36 раз
Поблагодарили: 6 раз

Re: Определение ближайшего рейса общественного транспорта

Сообщение ученик » Чт сен 21, 2017 8:52 am

Доделал свой скрипт информации о ближайшем транспорте

Код: Выделить всё

$now=time();//узнаем время
// определение выходного дня  
$wd=0;
$d= date('w' );
if ($d >= 6 ) {
    $wd=1;
}
$i=0;
$itog= array();
$dates = array(
"05:32",
"05:47",
"06:02",
"06:17",
"06:32",
"06:43",
"06:54",
"07:06",
"07:17",
"07:28",
"07:40",
"07:51",
"08:02",
"08:14",
"08:25",
"08:36",
"08:48",
"08:59",
"09:17",
"09:35",
"09:53",
"10:08",
"10:30",
"10:53",
"11:09",
"11:24",
"11:39",
"11:54",
"12:09",
"12:24",
"12:39",
"12:54",
"13:09",
"13:21",
"13:33",
"13:44",
"13:56",
"14:08",
"14:20",
"14:33",
"14:44",
"14:55",
"15:06",
"15:16",
"15:26",
"15:36",
"15:47",
"15:58",
"16:10",
"16:22",
"16:34",
"16:46",
"16:58",
"17:10",
"17:23",
"17:36",
"17:51",
"18:06",
"18:22",
"18:38",
"18:55",
"19:12",
"19:28",
"19:44",
"19:59",
"20:14",
"20:29",
"20:44",
"20:59",
"21:14",
"21:29",
"21:44",
"22:00",
"22:16",
"22:32",
"22:48",
"23:05",
"23:22",
"23:42",
"00:02"
); //массив с расписанием 
foreach ($dates as $test) {
  $timestamp = strtotime($test);
    if ($now >= $timestamp) {
        $ravno= (($now - $timestamp )/60) ;
          if ($ravno>=5 && $ravno<=45) {  // проверяем интервал от 5 мин до 45 мин
         $itog[$i] =(int) $ravno; // заносим данные в определенные ячейки массива
               $i++;  // увеличиваем счетчик ячейки 
                       }
              
                   }
}
$summ=$i;
 $say_phrase.=("ближайшие рейсы автобуса,  через");
    for($a=0;$a<$summ;$a++) {
     $say_phrase.=$itog[$a].'"минут" ';
        
    }
 say($say_phrase,2);
unset($itog); // обнуляем переменный массив 
 

Вроде все работает, но есть одна проблема.
В процессе настройки работы скрипта оказалось
Если, запускать скрипт через минуту, 2 минуты
он увеличивает время прибытия автобуса на ровно на 1-2 минуты
Вот выдержка из сообщений Алисы
  • 06:22 Алиса: ближайшие рейсы автобуса, через35"минут" 20"минут" 5"минут"
    06:20 Алиса: ближайшие рейсы автобуса, через33"минут" 18"минут"
сперва думал, что данные остаются в перемененном массиве, стал обнулять переменный массив в конце скрипта, но почему то эффект остался.
server i5, OS-Ubuntu Server 16., 1-wire
php 7, AMS,broadlink rm2,rm3 mini.
Ответить