Информация
Услуги
  • Внедрение
  • Настройка
  • Поддержка
  • Ремонт
Контакты
Новинка
Распродажа
Новости
Доставка
Оплата
Загрузки
  • Прошивки
    • WinBox
    • RouterOS
    • Мобильные приложения MikroTik
    • Архив
  • RouterOS
  • Мобильные приложения MikroTik
  • Архив
Форум
Настройка
    info@mikrotik.moscow
    +7 495 320-55-52
    Заказать звонок
    Mikrotik.moscow
    Каталог
    • Акции
      Акции
    • Маршрутизаторы
      Маршрутизаторы
    • Коммутаторы
      Коммутаторы
    • Радиомосты и уличные точки доступа
      Радиомосты и уличные точки доступа
    • Wi-Fi для дома и офиса
      Wi-Fi для дома и офиса
    • LTE/5G
      LTE/5G
    • Powerline адаптеры
      Powerline адаптеры
    • IoT устройства
      IoT устройства
    • Оборудование 60 ГГц
      Оборудование 60 ГГц
    • Материнские платы RouterBOARD
      Материнские платы RouterBOARD
    • Корпуса
      Корпуса
    • Интерфейсы
      Интерфейсы
    • SFP/QSFP трансиверы
      SFP/QSFP трансиверы
    • Аксессуары
      Аксессуары
    • Антенны
      Антенны
    • Архив
      Архив
    Войти
    0 Сравнение
    0 Избранное
    0 Корзина
    Скачать WinBox Скачать Прошивки Форум > RouterOS Форум > SwOS Форум > Железо
    Mikrotik.moscow
    Каталог
    Войти
    0 Сравнение
    0 Избранное
    0 Корзина
    Mikrotik.moscow
    Телефоны
    +7 495 320-55-52
    Заказать звонок
    0
    0
    0
    Mikrotik.moscow
    • +7 495 320-55-52
      • Назад
      • Телефоны
      • +7 495 320-55-52
      • Заказать звонок
    • info@mikrotik.moscow
    • г. Москва, ул. Бакунинская, 84
    • Пн-Пт: 09-00 до 18-00
      Сб-Вс: выходной


    • Кабинет
    • 0 Сравнение
    • 0 Избранное
    • 0 Корзина
    Главная
    Форум
    Форум
    RouterOS
    GPS http отправить на скрипт GpsGateServer

    GPS http отправить на скрипт GpsGateServer

    Форумы: RouterOS, Аппаратное обеспечение, SwOS, Обратная связь, Объявления, Сторонние инструменты
    Поиск  Пользователи  Правила  Войти
    Страницы: 1
    RSS
    GPS http отправить на скрипт GpsGateServer, RouterOS
     
    nemke
    Guest
    #1
    0
    21.07.2018 21:20:00
    Привет! Мне удалось настроить LtAP и сервер GpsGate для обмена данными, и сервер принимает координаты. Проблема в том, что всё работает только вручную, когда я ввожу все параметры в команду fetch. Формат для сервера такой:  
    http://IPADDESS:PORT/GpsGate/?$FRCMD,IMEI,_SendMessage,latitude,hemi,longitude,hemi,alt,speed,heading,date,time,valid  

    Команда на MT выглядит так:  
    /tool fetch mode=http url="http://192.168.88.85:8008/GpsGate/?cmd=$FRCMD,1234567890,_SendMessage,4450.39978,N,2024.35196,E,97.5,0,07,210718,222518,1" keep-result=no  

    В таком формате всё работает без проблем. Теперь я хочу сделать скрипт, который будет автоматически брать нужные значения из MT и подставлять их в команду fetch, чтобы автоматизировать процесс.  

    Данные с MT:  
    IMEI - 1234567890  
    Широта - N 44 50’ 39.972"  
    Долгота - E 20 24’ 35.190"  
    Высота - 97.5  
    Скорость - 0,07  
    Дата - 210718  
    Время - 222512  
    Фиксация - 1  

    Я не очень хорошо разбираюсь в скриптах, поэтому любая помощь будет полезна. Спасибо!
     
     
     
    kinx
    Guest
    #2
    0
    05.08.2018 23:19:00
    Привет! Ты уже смог написать скрипт, который работает с GpsGate? Мне это тоже интересно, и я купил LtAP LTE с внешней GPS-антенной для тестирования в одном из наших фургонов. Если всё будет работать нормально, мы будем использовать это для отслеживания наших автомобилей, а также для раздачи WiFi через LTE для встроенных Android-планшетов и навигации. И когда всё заработает отлично, мы порекомендуем это нашим клиентам.
     
     
     
    normis
    Guest
    #3
    0
    14.11.2018 12:53:00
    Пожалуйста, просто используйте внешнюю антенну, если она у вас хорошо работает. Встроенную антенну нужно доработать, так как она сейчас работает наилучшим образом только если порты LtAP направлены вверх, и внутри нет LTE-модема.
     
     
     
    jspool
    Guest
    #4
    0
    15.11.2018 15:58:00
    Внешняя антенна для LtAP GPS работает отлично. Внешние антенны для LTE я пока не использовал, так как встроенные антенны отлично справляются с текущей задачей.
     
     
     
    nemke
    Guest
    #5
    0
    12.08.2018 23:41:00
    Да, но работает только если я вручную задаю значение. Я хочу сделать скрипт, который будет делать всю работу автоматически: брать "log", "lat" и "speed", подставлять значения в sitax, которые нужно отправить в GSPGate. Если я пишу скрипт и задаю эти значения вручную, то после запуска команды вижу позицию на сервере GPS Gate:

    /tool fetch mode=http url="http://192.168.88.85:8008/GpsGate/?cmd=$FRCMD,1234567890,_SendMessage,4450.39,N,2024.35,E,97.5,0,07,210718,222518,1*65" keep-result=no

    Этот скрипт работает, но значения для log, alt и speed нужно брать напрямую из ROS и подставлять в скрипт. Вот с этим у меня проблема — я не знаю, как это сделать. Для меня сложно, потому что эти значения нельзя получить так, например, как $[system gps get longitite].
     
     
     
    danofnz
    Guest
    #6
    0
    02.11.2018 04:21:00
    Я только что настроил LtAP Mini (LTE) вместо своего старого GPS-трекера TK103B. Друг нашёл эту тему, когда я упомянул, что интересуюсь им, и ваш пост направил меня в нужную сторону, спасибо! Используя документацию GpsGate и MikroTik, я собрал два скрипта: один для запуска на LtAP и PHP-скрипт для преобразования данных. PHP-скрипт у меня стоит на сервере GpsGate после добавления PHP в IIS. RouterOS плохо работает с десятичными числами, поэтому преобразование широты и долготы прямо на LtAP оказалось тупиком, несмотря на все попытки. Даже в документации MikroTik данные передаются в PHP-скрипт для конвертации. На мой взгляд, эти решения ещё не окончательные, но пока работают достаточно хорошо.

    Скрипт для запуска на LtAP (у меня стоит запускать его каждые 15 секунд):  
    php :local server “domain_or_ip/gps.php”  
    :local port “80”  
    get imei :global lteimei  
    /interface lte info lte1 once do={:set $lteimei $(“imei”)}  
    get gps data :global datetime :global lat :global lon :global alt :global spd :global bear :global val  
    /system gps monitor once do={  
    :set $datetime $(“date-and-time”)  
    :set $lat $(“latitude”)  
    :set $lon $(“longitude”)  
    :set $alt $(“altitude”)  
    :set $spd $(“speed”)  
    :set $bear $(“true-bearing”)  
    :set $val $(“valid”)  
    }  
    months array :local months (“jan”,“feb”,“mar”,“apr”,“may”,“jun”,“jul”,“aug”,“sep”,“oct”,“nov”,“dec”);  
    преобразование названия месяца в число :local month ([ :find $months ([:pick $datetime 0 3]) -1 ] + 1);
    :if ($month < 10) do={:set month (“0” . $month);}  
    обработка даты и времени :local date ([:pick $datetime 4 6] . $month . [:pick $datetime 9 11]);
    :local time ([:pick $datetime 12 14] . [:pick $datetime 15 17] . [:pick $datetime 18 20]);
    отправка GPS-данных в PHP-скрипт  
    fetch mode=http url=“http://$server” port=$port http-method=post http-data=(“{ "imei":"” . $lteimei . “", "lat":"” . $lat . “", "lon":"” . $lon . “", "alt":"” . $alt . “", "spd":"” . $spd . “", "bear":"” . $bear . “", "date":"” . $date . “", "time":"” . $time . “", "val":"” . $val . “" }”) http-content-type=“application/json”

    PHP-скрипт для преобразования данных и передачи их в GpsGate:  
    <?php

    // сервер gpsgate  
    $server = "127.0.0.1";  
    $port = "8008";

    // Конвертация DMS (градусы/минуты/секунды) в DMM (NMEA)  
    function DMStoDMM($deg,$min,$sec)  
    {  
    //return $deg+((($min*60)+($sec))/3600)  
    return $deg.($min+(($sec)/60));  
    }  
    function KMHtoKNOT($spd)  
    {  
    //return (($spd)/1.852)  
    return (($spd)/1.852);  
    }

    // получение входных данных  
    $raw = file_get_contents('php://input');  
    $data = json_decode($raw);

    // проверка наличия всех данных  
    if (!empty($data) && is_object($data) && property_exists($data,'imei') && property_exists($data,'lat') && property_exists($data,'lon') && property_exists($data,'alt') && property_exists($data,'spd') && property_exists($data,'bear') && property_exists($data,'date') && property_exists($data,'time') && property_exists($data,'val')){  
    // очистка переменных  
    $imei = $lat = $lon = $alt = $spd = $bear = $date = $time = $val = '';  
    // установка imei  
    $imei = $data->imei;  
    // разделение координат DMS и конвертация в DMM (NMEA)  
    if(preg_match('/^(N|E|W|S)\ (\d+)\ (\d+)\'\ (\d+\.\d+)/',$data->lat,$result)){  
    $lat = DMStoDMM($result[2], $result[3], $result[4]);
    $lathem = $result[1];
    }  
    if(preg_match('/^(N|E|W|S)\ (\d+)\ (\d+)\'\ (\d+\.\d+)/',$data->lon,$result)){  
    $lon = DMStoDMM($result[2], $result[3], $result[4]);
    $lonhem = $result[1];
    }  
    // обработка высоты, убираем 'm'  
    if(preg_match('/^(\d+)\.(\d+)/',$data->alt,$result)){  
    $alt = $result[1].".".$result[2];
    }  
    // конвертация скорости в узлы  
    if(preg_match('/^(\d+)\.(\d+)/',$data->spd,$result)){  
    $spd = $result[1].".".$result[2];
    if(!$result[1] == "0"){
    $spd = KMHtoKNOT($spd);  
    } else {  
    $spd = "0.00";  
    }  
    }  
    // обработка направления (bearing)  
    if(preg_match('/^(\d+)\.(\d+)/',$data->bear,$result)){  
    $bear = $result[1].".".$result[2];
    }  
    // дата  
    $date = ($data->date);  
    // время  
    $time = ($data->time);  
    // преобразование валидности в 1 (true) или 0  
    if(($data->val) == "true"){  
    $val = "1";  
    } else {  
    $val = "0";  
    }

    // возврат данных на источник (mikrotik файл gps.php), отключить при необходимости  
    echo("IMEI: $imei\nLatitude: $lat\nLatitude Hemisphere: $lathem\nLongitude: $lon\nLongitude Hemisphere: $lonhem\nAltitude: $alt (m)\nSpeed: $spd (Knots)\nBearing: $bear (Deg.)\nDate: $date\nTime: $time\nValid: $val\ncURL: http://$server:$port/GpsGate/%3Fcmd=%24FRCMD,$imei,_SendMessage,,$lat,$lathem,$lon,$lonhem,$alt,$spd,$bear,$date,$time,$val\n\n");

    $url = "http://$server:$port/GpsGate/%3Fcmd=%24FRCMD,$imei,_SendMessage,,$lat,$lathem,$lon,$lonhem,$alt,$spd,$bear,$date,$time,$val";  
    $ch = curl_init($url);  
    $result = curl_exec($ch);  
    curl_close($ch);  
    echo("$result");  
    }  
    ?>

    Надеюсь, это поможет, если ты до сих пор хочешь заставить это работать.
     
     
     
    nemke
    Guest
    #7
    0
    07.11.2018 22:02:00
    Привет, чувак, спасибо. Я не очень умею писать скрипты, НО МНЕ НУЖЕН этот первый скрипт, который на LTAP запускается каждые 15 секунд, а второй (php) — на сервере GPS Gate? Как ты настроил GPS Gate для этого, есть скриншоты? Ты тестировал, хорошо ли он работает? Можно ли использовать несколько LTAP для отправки данных на один и тот же GPS Gate?
     
     
     
    nemke
    Guest
    #8
    0
    10.11.2018 20:47:00
    Пожалуйста, пришли мне свой e-mail для связи, если хочешь. Мне нужна эта функция. У меня есть несколько вопросов, мой контакт: nemke.petrovic@gmail.com
     
     
     
    jspool
    Guest
    #9
    0
    11.11.2018 23:22:00
    Особенно после выпуска оборудования с встроенным GPS, такого как LTAP, должно быть понятно, что GPS-пакет нуждается в доработке. Mikrotik нужно уделить пару часов GPS-пакету и вывести данные в удобном формате, который не требует посреднического сервера для преобразования данных Mikrotik в приемлемый формат для работы с API.
     
     
     
    normis
    Guest
    #10
    0
    12.11.2018 06:52:00
    Ты прав. У нас это уже в планах, и теперь, когда есть LtAP mini, мы постараемся это реализовать.
     
     
     
    jspool
    Guest
    #11
    0
    12.11.2018 16:25:00
    Отличные новости, Normis! Поддержка по электронной почте некоторое время назад была совсем не такой позитивной. Р рад слышать, что это уже в списке дел.
     
     
     
    danofnz
    Guest
    #12
    0
    12.11.2018 21:46:00
    Привет! Причина, по которой я не вдавался в подробности запуска PHP-скрипта внутри GpsGate, в том, что по умолчанию GpsGate использует IIS Express в качестве веб-сервера, и добавлять PHP туда — не самая простая задача. Я же использую GpsGate с полноценным IIS (ОС: Windows Server Standard 1803 (Core)), и добавление PHP в IIS хорошо задокументировано. Твой лучший вариант — запустить отдельный веб-сервер, например XAMPP, если используешь Windows, и обслуживать PHP-скрипт там.  

    В первом скрипте (LtAP) нужно обновить следующие строки, чтобы они указывали на веб-сервер, где расположен PHP-скрипт:  
    php :local server "domain_or_ip/gps.php"  
    :local port "80"  

    В самом PHP-скрипте нужно обновить, чтобы он указывал на сервер GpsGate:  
    // gpsgate server  
    $server = "127.0.0.1";  
    $port = "8008";  

    Я активно пользуюсь LtAP в своем автомобиле, и у меня всё работает. Это не идеально, но, как я уже говорил, пока работает достаточно хорошо. Я видел два случая, когда GPS-данные за 30 секунд показывали меня где-то на другом конце света и обратно. Планирую изучить данные, которые GpsGate сохранил в эти моменты, чтобы понять, в чем причина.
     
     
     
    nemke
    Guest
    #13
    0
    13.11.2018 22:51:00
    +1000 за это. LtAP очень сложно использовать в любом GPS-сервере (GPS Gate или GPSVox), формат http post (захват в MT) не особо хорошо поддерживается в GPS-мире. Так что ты прав, нужен промежуточный сервер для преобразования формата/синтаксиса, и это создает проблемы с скоростью и эффективностью.
     
     
     
    WirelessRudy
    Guest
    #14
    0
    17.01.2019 10:31:00
    Есть какие-то новости по этому поводу? Было бы здорово увидеть хорошее, подробно проработанное пример использования этого устройства в трекинговом плоттере. Хотя я немного понимаю ROS, у меня нет ни малейшего понятия, как использовать LtAP mini для отслеживания моего транспорта. Даже не знаю, с чего начать, кроме как читать вики, которая только больше запутывает…
     
     
     
    normis
    Guest
    #15
    0
    17.01.2019 12:34:00
    RouterOS уже может выводить координаты в других форматах. Эта тема больше не актуальна.
     
     
     
    crau1000
    Guest
    #16
    0
    31.01.2019 02:48:00
    Пробовал использовать format=dd в скрипте, но всё равно не работает. Похоже, скрипт не может обрабатывать отрицательные координаты. Если у вас, например, долгота -117.1234, запись в базу данных не проходит... и тогда вы получаете добро пожаловать на знаменитый Нулевой остров. Что думаешь, Normis?
     
     
     
    kinx
    Guest
    #17
    0
    29.08.2019 13:09:00
    Поставлю лайк этому сообщению и подниму тему, потому что мог бы распродавать LtAP mini, как горячие пирожки в Париже. Но пока ничего стабильного нет… не могу.
     
     
     
    normis
    Guest
    #18
    0
    29.08.2019 13:17:00
    Недавно мы исправили проблему с отрицательными координатами, она всё ещё присутствует?
     
     
     
    Страницы: 1
    Читают тему
    +7 495 320-55-52
    info@mikrotik.moscow
    Электрозаводская, Бауманская
    Москва, ул. Бакунинская, 84с21
    Конфиденциальность Оферта
    © 2026 «Mikrotik.Moscow»
    Главная Каталог 0 Корзина 0 Избранные Кабинет 0 Сравнение Акции Контакты Услуги Бренды Отзывы Компания Лицензии Документы Реквизиты Поиск Блог Обзоры