среда, 8 ноября 2017 г.

Flightradar24 — как это работает?

Наверное каждый, кто хоть раз встречал или провожал родственников или друзей на самолет, пользовался бесплатным сервисом Flightradar24. Это весьма удобный способ отслеживания положения самолета в реальном времени.



Как показал опрос знакомых, очень мало кто знает, что этот сервис поддерживается лишь энтузиастами, отправляющими на сервер данные. Еще меньше знают, что присоединиться к проекту может любой желающий.

Восполним этот пробел. О том, как это работает продолжим под катом.




Железо


Самый первый вопрос — откуда берутся данные. 

Каждый гражданский борт оснащен специальным передатчиком, так называемым ADS-B transponder:


(фото с сайта Garmin)

Это устройство посылает на частоте 1090МГц специальные посылки, содержащие основные параметры полета, тип воздушного судна, его координаты, пункт назначения и пр. 

Сигнал на спектре выглядит примерно так:



И что для нас самое важное, декодировать эти данные несложно, достаточно RTL-SDR приемника, ценой порядка 8$, подключенного к компьютеру. Собственно, идея уже наверно ясна — если собрать данные с множества приемников, то получим картинку, примерно такую:



Но и это еще не все. Часть самолетов передают пакеты данных, но в них отсутствуют GPS-координаты. Если принимать данные одновременно со множества приемников, координаты которых известны, то, анализируя задержки на разных приемниках, можно узнать местоположение воздушного судна. Такая технология называется multilateration (MLAT), подробнее о ней можно прочитать на сайте.

И, наконец, последний вопрос — как принимаются данные. Ответ прост, разместить у себя приемник может любой желающий, цена вопроса составляет от 0 до 50$. Для примера, так выглядит карта приемников сервиса Flightaware:



Как можно видеть, покрытие российской части оставляет желать лучшего, так что у некоторых вполне есть шанс быть первым.

Для приема данных необходимы:

— Raspberry Pi2/3 с подключенным интернетом (цена от 20$)
— RTL-SDR-донгл (цена от 10$)
— хотя бы простейшая антенна их 2х кусков провода длиной 6.8см каждый (1/4 диполь на 1090МГц)

Также желательно место с более-менее открытым обзором хотя бы части неба, т.к. сигналы гигагерцевой частоты поглощаются препятствиями вроде домов или деревьев.

У меня и Raspberry Pi, и RTL-SDR уже были, так что ничего покупать не пришлось. Но попробовать бесплатно получить готовый приемник может любой — и Flightradar и Flightaware рассылают комплекты бесплатно пользователям из тех районов, где покрытие на данный момент недостаточно. Отправить запрос можно по ссылке (Flightradar или Flightaware), разумеется, пробовать целесообразно тем, кто живет в достаточно отдаленной местности.

Я использовал комплект из RTL-SDR V3, который вместе с антенной и мини-штативом стоил 27$ с бесплатной доставкой из Китая:



Кстати, как второй бонус, всем, отправляющим данные на сервер, и Flightradar24 и Flightaware предоставляют неограниченный доступ к premium-аккаунту и всем функциям сервера (отдельно такой доступ стоит порядка 50$/месяц). Так что если кто-то интересуется авиацией и хочет иметь расширенный доступ к такому аккаунту, установка RTLSDR-приемника является вполне дешевой альтернативой. 

Тестирование


Установка предельно проста, на Raspberry Pi достаточно подключить приемник и запустить одну команду:

sudo bash -c "$(wget -O - http://repo.feed.flightradar24.com/install_fr24_rpi.sh)"

Скрипт запросит необходимые данные (координаты и тип приемника, адрес электронной почты), далее софт будет работать автоматически, внимание со стороны пользователя больше не требуется. Параллельно можно активировать премиум-аккаунт (для FR24 по ссылке https://www.flightradar24.com/premium/signup?account=free) и сразу пользоваться всеми его возможностями (треки полетов и пр).

Можно зайти на страницу IP-адреса Raspberry Pi и увидеть текущий статус:


Гораздо больше информации можно увидеть на странице аккаунта Flightradar24:



Я живу на 6-м этаже относительно недалеко от аэропорта, так что количество наблюдаемых самолетов за день составило больше 1000, даже на простую антенну на подоконнике. Интересно, что даже с такой антенной максимальная дальность до принятого борта составила 215 миль. Разные варианты антенн можно найти на ebay, набрав в поиске ads-b antenna.

Альтернатива


Бонус для тех, у кого хватило терпения дочитать до сюда. У некоторых читаталей может возникнуть вопрос: можно ли обойтись без сторонних сервисов типа Flightradar? Разумеется можно, запустить декодер на Raspberry Pi можно и напрямую. Скачать исходники можно по адресу github.com/antirez/dump1090.

Достаточно на Raspberry Pi набрать 3 команды:

git clone https://github.com/antirez/dump1090.git
cd dump1090/
make

Затем декодер можно запустить командой:

./dump1090 --interactive --net

Декодер начинает работу, и мы видим «сырые данные» — список видимых «бортов»:



Теперь можно зайти браузером на Raspberry Pi и полюбоваться собственным, локальным Flightradar, картинка может выглядеть примерно так:



Зачем это может быть надо? Во-первых, просто из интереса, во-вторых, Flightradar24, к сожалению, фильтрует часть данных и показывает не все самолеты (например, могут не показываться военные, правительственные, или бизнес-джеты). Запустив собственный локальный сервис, мы видим все «как есть», безо всякой цензуры. Зато, конечно, объем данных ограничен нашим локальным местоположением и качеством антенны, также не будет доступна технология MLAT. Dump1090 доступен в исходниках, так что желающие могут даже создать свою версию Flightradar, c блекджеком и прочими bells and whistles.

Выводы


Как можно видеть, все не так сложно, при этом вполне интересно и недорого. Для понимания порядка цен: еще 10 лет назад приемник Airnav RadarBox стоил порядка 1000$, сейчас RTL-SDR, который делает то же самое, можно взять за 10$.

В моем случае приемник был запущен только для тестирования, практического смысла держать его постоянно включенным нет, плотность покрытия европейской части уже и так достигает 100%. Для жителей российской глубинки, наоборот, это может быть вполне интересным — появляется возможность как сделать полезное дело для авиапутешественников всего мира, расширив зону покрытия, так и получить доступ к Premium-аккаунту вышеупомянутых сайтов.

Всем удачных экспериментов.

via https://geektimes.ru/post/295135/

Комментариев нет:

Отправить комментарий