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

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

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

Железо


Самый первый вопрос — откуда берутся данные.
Каждый гражданский борт оснащен специальным передатчиком, так называемым ADS-B transponder:
uuojs839h2_px4ritjoebq3hpba.jpeg
(фото с сайта Garmin)

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

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

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

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

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

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

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

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

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

Кстати, как второй бонус, всем, отправляющим данные на сервер, и 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 и увидеть текущий статус:
consizpsres1pcdz8qqpt2inmdk.jpeg

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

Я живу на 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

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

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

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

Выводы


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

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

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

© Geektimes