Мы с семьёй летом часто путешествуем в различные интересные места. Появилось желание организовать систему, которая будет сохранять трек поездки и отображать наше текущее местоположение на сайте в плюс/минус реальном времени.
Последнее, что использовал — это связка android-приложения TrackMe. Hike&Travel Recorder и плагина Trackserver для WordPress.
Плюсы:
- работает стабильно;
- трек отправляется на сайт в реальном времени.
Минусы:
- отправляется только текущее местоположение (если нет интернета, то не отправляется ничего);
- приложение приходится запускать вручную.
В конечном итоге я решил придумать какую-нибудь систему, которая будет:
- отправлять не только текущее местоположение, но будет и подгружать предыдущие точки;
- будет автоматически запускаться при пуске автомобиля.
В итоге вышел такой алгоритм работы:
- в машине установлен мини-ПК, к которому подключен GPS-приёмник и 4G модем;
- мини-ПК подключен к автомобилю в USB порт на ЗУ, включенном в прикуриватель;
- скрипт на мини-ПК получает с приёмника GPS координаты и сохраняет их в БД SQLite3;
- другой скрипт на мини-ПК выдёргивает из БД SQLite3 некоторое кол-во неотправленных данных (координат), отправляет их на внешний сервер и помечает эти данные как отправленные;
- на внешнем сервере полученные данные (координаты) сохраняются в БД MariaDB;
- на внешнем сервере на основании данных (координат) из БД MariaDB генерируются файлы треков в формате gpx;
- самый новый файл сохраняется с именем last.gpx и, как и все файлы gpx доступен из интернета;
- сайт всегда отображает файл last.gpx.
Для реализации подобной задумки я использовал следующие компоненты:
- мини-ПК Orange PI PC2 (уже был у меня)
- Приёмник GPS/GLONASS USB, купленный на AliExpress
- 4G/3G модем USB/WIFI, тоже с AliExpress
- VDS сервер сначала на своём домашнем оборудовании. Позже на арендованном.
Описание будет состоять из четырёх частей (помимо этой):
Часть 1: Установка GPSD, получение GPS координат и сохранение их в БД SQLite3.
Часть 2: Отправка GPS координат из БД SQLite3 на внешний сервер.