Сбор данных из внешних источников и внутренних сенсоров с помощью NextGIS Logger
по адресу http://gis-lab.info/qa/nextgis-logger.html
Описание инструмента для сбора данных с сенсоров мобильного устройства
NextGIS Logger - приложение для сбора данных с окружающих источников информации (базовые станции сотовой сети, GPS) и внутренних сенсоров (акселерометр, магнетометр, ориентация, гироскоп, микрофон) для устройств с операционной системой Android 3.0+ (Honeycomb). Установить через Google Play.
NextGIS Logger может собирать данные в двух режимах:
- Логгер - сервис, который собирает данные постоянно, независимо от пользователя, сохраняет их в Логе 1.
- Метки - данные собираются дискретно, по запросу пользователя, сохраняются в Логе 2.
Приложение может работать в двух режимах по-отдельности или параллельно. Данные логов связаны друг с другом временными метками.
Результатом работы программы является набор таблиц (файлов в формате CSV), которые можно открыть в любом табличном редакторе.
Программа может пригодиться тем, кто занимается позиционированием по базовым станциям сотовой сети, изучением силы сигнала в своих окрестностях, записью GPS треков и меток каких-нибудь объектов и т.д.
Создано в | Веб ГИС для вашей организации по доступной цене |
Почему NextGIS Logger
Существует много приложений позволяющих посмотреть информацию о базовых станциях сотовой сети, информацию с внутренних сенсоров и внешних источников информации и записать её в каком-то виде. Перед тем, как начать создавать NextGIS Logger мы проанализировали основные аналоги (Field Test-SignalSitemap, GSM signal monitoring, Gsm Signal Monitor, GSM Monitor, GSM Field Test, OpenSignal, inViu OpenCellID, Netmonitor, G-MON, G-NetTrack, NetMon, Network Monitor) и обнаружили, что все они не удовлетворяют одному или нескольким из следующих условий:
- Запись лога в удобном человеко- и машиночитаемом формате;
- Запись лога с минимальным интервалом (минимум 1 сек);
- Параллельная логу расстановка пользовательских отметок с теми же данными, связанных с логом временными метками;
- Подгрузка пользовательского списка меток из внешнего файла
- Выбор, что логгировать, а что не логгировать
Где взять
Программу можно скачать с Google Play (предпочтительный способ) или в виде APK (скачать). Если вы устанавливаете из APK, нужно разрешить установку из "Unknown sources" в настройках системы, секция "Security". Официальная страница программы - на сайте разработчика - NextGIS.
NextGIS Logger это программное обеспечение с открытым исходным кодом. Лицензия - GPL v2. Код можно получить на Github.
Интерфейс и использование
После установки найдите иконку приложения в списке программ.
В приложении 4 основных экрана:
Основной экран
- Сессии
- Кнопка "Открыть/Закрыть" - открывают новую или закрывают открытую сессию и сохраняют все данные. Для каждой сессии создается папка с набором файлов на диске. Текущая сессия не может быть быть закрыта пока не остановлен логгер.
- Режимы
- Кнопка "Запустить логгер/Остановить логгер" - запускает или останавливает запись лога 1. Пока не создана сессия логгер запустить нельзя.
- Кнопка "Метки" - открывает окно с перечнем маркеров. Пока не создана сессия маркеры ставить нельзя.
- Текстовые поля показывающие полезную информацию о сессии.
Метки
Метки - это такие же точки лога, но расставляемые не автоматически, а когда скажет пользователь. Меткам можно задавать свои имена. Список меток может быть пустой или его можно предварительно заполнить, указав в настройках приложения файл с метками. Он имеет очень простую структуру:
ID,NAME 1,marker1 2,marker2 3,marker3
Расставленные метки попадают в свой собственный лог.
Чтобы поставить метку нужно:
- Открыть сессию (если она еще не открыта)
- Выбрать "Метки"
- Если список меток пуст - нажать на + и ввести имя метки, после чего нажать ОК. Метка с введенным названием будет автоматически добавлена в лог. Если в процессе создании метки включить галку "Сохранить в список", то название метки (категория) будет сохранено в список для дальнейшего использования.
- Если список заполнен - выбрать одну из них или нажать на лупу и ввести часть имени метки, после чего выбрать одну из отфильтрованных.
На экране меток так же можно в течение 4 секунд отменять поставленные метки, для этого, после того как вы выбрали метку, нужно нажать на стрелку отменить в ФАБе.
Сессии
Что бы ограничить один лог от другого используются сессии.
Сессия можно управлять на экране сессий. На нем можно:
- Увидеть список сессий записанных на устройстве
- Выбрать все сессии
- Поделиться выбранными сессиями стандартными методами (Dropbox, Gmail и т.д.)
- Удалить выбранные сессии
Данные в реальном времени
Все собранные данные попадают в лог, предназначенный для чтения машинами. Вы же можете ознакомиться с данными непосредственно в процессе их сбора переключившись в режим просмотра данных в реальном времени (Live data). Чтобы переключиться нужно нажать на FAB, круглую кнопку в нижнем правом углу экрана.
Данные собраны в два экрана: всё по базовым станциям сотовой сети и данные по сенсорам (включая GPS).
Внешние сенсоры
NextGIS Logger умеет собирать данные с подключаемых сенсоров. На данный момент поддерживаются сенсоры на платформе Arduino.
Все что вам нужно, чтобы начать собирать данные это сам Arduino, Bluetooth модуль и собственно сами сенсоры. После этого:
- Соберите схему
- Создайте скетч и загрузите его в Arduino
- Определите все ваши сенсоры в файле JSON
- Подключитесь к Bluetooth устройству в приложении.
Подробности:
Настройки
Вам наверняка нужно собирать что-то конкретное и список меток у вас свой, всё это можно настроить.
- Основные настройки:
- Строка идентификации - здесь можно указать имя или инициалы или что-то еще, эта строка будет использоваться для названия сессий и для точек лога
- Период сбора информации в секундах (от 1 секунды)
- Использование файла меток - здесь можно указать файл с метками (он создается отдельно), если его не указать, можно вводить названия меток в процессе сбора данных.
- Пытаться использовать API 17+ для поиска соседних базовых станций.
- Держать экран включенным - для списка меток.
- Сенсоры:
- Акселерометр - включить в лог данные с акселерометра
- Линейный акселерометр - использовать линейный акселерометр (если он есть)
- Магнетометр - включить в лог данные с магнетометра
- Ориентация - писать лог ориентации
- Гироскоп - включить в лог данные с гироскопа
- Микрофон - отслеживать уровень шума (дБ)
Структура результатов
Логи сессий сохраняются каждый в свою папку, имя которых запрашивается при старте сессии. Все папки сессий хранятся на внешнем носителе в папке "nextgis_logger".
Базовые станции сотовой сети
Логгер создаёт файл "cell_time_log.csv" где сохраняется информация с базовых станций GSM/3G.
Логгер также создаёт файл "cell_time_mark.csv" где сохраняется информация с базовых станций GSM/3G по пользовательским меткам.
Структура данных:
- ID - идентификатор из файла меток (еще). Логгер в качестве ID использует пустую строку "".
- Name - имя метки из файла меток (еще) или введенное вручную. Логгер в качестве имени использует строку "ServiceLog".
- User - строка идентификации пользователя из настроек (еще).
- TimeStamp - временная метка. Не уникальна. См. раздел ниже про конвертацию в человекочитаемый вид. Пример: 1409513090236
- NetworkGen - текущее поколениеи сети (2G/3G/4G) (еще)
- NetworkType - текущий тип сети (EDGE/GPRS/UMTS/HSPA...)
- Active - 1 если это базовая станция, иначе - комбинация MCC-MNC-LAC-CID активной базовой станции если это станция-сосед.
- MCC - Mobile Country Code (еще). Пример: 284
- MNC - Mobile Network Code (еще). Пример: 5
- LAC - Location Area Code (еще). Пример: 380433
- CID - Cell ID (еще). Пример: 5599
- PSC - Primary Scrambling Code для сети 3G. Диапазон значений: 0..511. Пример: 145
- Power - сила сигнала - RSSI для 2G и RSCP для 3G. Пример: -93
Сенсоры
Логгер создаёт файл "sensor_time_log.csv" где сохраняется информация с сенсоров.
Логгер также создаёт файл "sensor_time_mark.csv" где сохраняется информация с сенсоров по пользовательским меткам.
Структура данных:
- ID - см. аналогично выше;
- Name - см. аналогично выше;
- User - см. аналогично выше;
- TimeStamp - см. аналогично выше;
- Type - "Raw" если используется просто акселерометр, "Linear" если акселерометр линейный;
- Accel_X - ускорение по оси X в м/с^2;
- Accel_Y - ускорение по оси Y в м/с^2;
- Accel_Z - ускорение по оси Z в м/с^2;
- Azimuth - угол между направлением на магнитный полюс и осью Y, вокруг оси Z (0..359). 0=Север, 90=Восток, 180=Юг, 270=Запад;
- Pitch - вращение по оси X (-180..180), значения положительные когда ось Z движется по направлнию к оси Y;
- Roll - вращение по оси Y (-90..90) возрастает по мере движения устройства по часовой стрелке;
- Magnetic - measure the ambient magnetic field in the X, Y and Z axis. Value in micro-Tesla (uT);
- Gyro_X - угловая скорость по оси X, радиан/сек;
- Gyro_Y - угловая скорость по оси Y, радиан/сек;
- Gyro_Z - угловая скорость по оси Z, радиан/сек;
- GPS_Lat - широта, десятичные градусы;
- GPS_Lon - долгота, десятичные градусы;
- GPS_Alt - Высота над уровнем море относительно эллипсоида WGS 84, метры;
- GPS_Accuracy - точность засечки GPS в радиусе 68%, метры;
- GPS_Speed - скорость, в метрах/секунду;
- GPS_Bearing - горизонтальное направление движения устройства, не связано с ориентацией устройства, градусы;
- Audio - уровень шума, дБ.
Информация об устройстве
При открытии сессии создаётся файл "device_info.txt", он содержит информацию об устройстве.
- Manufacturer - производитель
- Brand - марка
- Model - модель
- Product - продукт
- Android version - версия андроид
- API version - версия API
- Kernel version - версия ядра
- Radio firmware version - версия прошивки
- Logger version name - версия приложения
- Logger version code - версия кодовой базы приложения
Полезное в тему
Временные метки
Программа пишет временные метки в двух видах - машиночитаемом и человекочитаемом.
Человекочитаемые метки пишутся в следующем формате, например: July 19, 2015 7:43:56 PM.
Машиночитаемые временные метки (timestamp) можно сконвертировать в привычное время этим инструментом или следующей формулой в Excel/Calc (в последнем нужно заменить запятые на точку с запятой в функции DATE()):
=(((A1/60)/60)/24)+DATE(1970,1,1)
Например для 1428953886:
=(((1428953886/60)/60)/24)+DATE(1970,1,1) 42380,818125 После форматирования (DD.MM.YY HH:MM:SS): 11.01.16 19:38:06
Время в UTC, чтобы прибавить местное, нужно к формуле добавить +(3/24) (UTC+3).
Контакты
Если вы нашли ошибку или у вас есть предложения по улучшению расширения — воспользуйтесь багтрекером. Кроме того, вопросы по использованию расширения можно задать авторам напрямую.