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

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

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

Железо

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

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

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

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

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

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

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

У меня и 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, даже на простую антенну на подоконнике.

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

Бонус для тех, у кого хватило терпения дочитать до сюда. У некоторых читаталей может возникнуть вопрос — можно ли обойтись без сторонних сервисов типа 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-аккаунту вышеупомянутых сайтов.

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

 
Источник

Читайте также