Сервис получает данные от GPS датчиков, которые установлены в автобусах, и отправляет их клиентскому приложению, например браузеру. Браузер, в свою очередь, отображает движение автобусов на карте. Имитация работы GPS шлюза реализована в скрипте fake_bus.py.
Демонстрация работы сервиса:
Для запуска сервиса нужен предустановленный Python версии не ниже 3.8+ (на других версиях не проверялся). Также в программе используются следующие сторонние библиотеки:
Рекомендуется устанавливать зависимости в виртуальном окружении, используя virtualenv или venv.
- Скопируйте репозиторий в текущий каталог. Воспользуйтесь командой:
$ git clone https://github.com/igorzakhar/bus-tracking-py.git
После этого программа будет скопирована в каталог bus-tracking-py
- Создайте и активируйте виртуальное окружение:
$ cd bus-tracking-py # Переходим в каталог с программой
$ python3 -m venv my_virtual_environment # Создаем виртуальное окружение
$ source my_virtual_environment/bin/activate # Активируем виртуальное окружение
- Установите сторонние библиотеки из файла зависимостей:
$ pip install -r requirements.txt # В качестве альтернативы используйте pip3
Запуск основного сервиса:
$ python3 server.py
Серевер запустится по адресу 127.0.0.1 и будет слушать следующие порты:
:8080
для получения данных от GPS шлюза;:8000
для отправки данных клиентскому приложению (например, браузеру).
Запуск имитатора GPS шлюза, который "принимает" данные от GPS трекеров и отправляет нашему сервису:
$ python3 fake_bus.py
По умолчанию имитатор будет отправлять данные о 10 маршрутах, на каждом маршруте "работает" по 10 автобусов (всего 100 автобусов). Данные параметры можно изменить через аргументы командной строки: -r
- количество маршрутов, -b
- количество автобусов на маршруте.
Полный список параметров:
$ python server.py --help
Usage: server.py [OPTIONS]
Options:
-h, --host TEXT Address of the main server.
-bs, --bus_server TEXT Address of the tracking server.
-cp, --client_port INTEGER Client port (ex. browser)
-bp, --bus_port INTEGER Port of the tracking server (GPS gateway).
-v, --verbose Enabling verbose logging.
--help Show this message and exit.
После запуска server.py
и fake_bus.py
откройте в браузере файл frontend/index.html
.