Дрон представляется сам
У самолёта на карте есть транспондер, который сообщает, кто он и куда летит. У дронов долго не было ничего подобного. Но с января 2024 года в Евросоюзе дрон с маркировкой класса от C1 до C3 обязан в полёте сам передавать свою идентификацию и местоположение. Это называется Remote ID, а в США выполнения похожего правила требуют с марта того же года.
Никакой особой сети для этого нет. Дрон использует Bluetooth или Wi-Fi — то самое радио, которое у каждого в кармане, — и примерно раз в секунду говорит: вот мой серийный номер, вот регистрационный номер моего оператора, я здесь, на такой высоте, с такой скоростью, лечу вот туда. А вот здесь стоит пилот или место, откуда я взлетел.
Это слышит и телефон у забора, и приёмник на крыше. Только не очень далеко: Bluetooth — не радио на десятки километров. Кто хочет видеть дроны над своим посёлком, тому нужна антенна поблизости.

Путей передачи при этом больше одного. Технический стандарт знает четыре: старый Bluetooth 4, Bluetooth 5 с увеличенной дальностью, Wi-Fi beacon и Wi-Fi NAN. Европейская норма не допускает старый Bluetooth в качестве единственного пути, так что приёмник, который слушает только его, может дрон совсем пропустить, даже если тот летит прямо над ним. Вот почему наш умеет слушать на всех четырёх.
Маленький компьютер у окна
Приёмник — это Raspberry Pi, компьютер размером с колоду карт. Bluetooth в нём встроенный. Но большинство дронов в Европе передают через Wi-Fi или Bluetooth 5 с увеличенной дальностью, поэтому к нему добавляется один USB-адаптер Wi-Fi; без него станция слышит только Bluetooth, но может начать работу сразу, а адаптер получить позже.
Программу приёмника мы написали сами, по стандарту, и ставится она одной командой. Сразу после установки она скажет, что на самом деле умеет ваше железо: какая у вас версия Bluetooth, потянет ли он увеличенную дальность, в каких диапазонах слушает Wi-Fi-адаптер. Большинство людей этого о своём компьютере не знают, да и не обязаны.
Мы подумали и о вещах, которые к дронам отношения не имеют. Интерфейс, через который компьютер выходит в интернет, приёмник никогда не переключает и не перенастраивает, так что никто не отрежет себе собственное подключение. Если на том же компьютере уже работает другая программа для дронов, наша не воюет с ней за радио, а слушает рядом. А в её собственных журналах нет ни серийных номеров, ни положения дронов, только количества и время.

Хорошо ли слушает приёмник, покажет панель. «Состояние приёмника» словами говорит, слышит ли станция дроны прямо сейчас, только слушает или затихла. Тишина сама по себе не неисправность: дроны летают не всё время. Поэтому панель сравнивает сегодняшнюю тишину с тем, какими обычно бывают перерывы между полётами за неделю, и только если она необычно долгая, напишет, что станция затихла. Станция, которая не работает, показывается отдельно, чтобы это не путалось с тем, что просто никто не летал.
Рядом — неделя в цифрах: полёты по дням, часы, когда летают, и сколько сообщений пришло каким радиопутём в каждый из дней. Там видно, окупился ли тот Wi-Fi-адаптер.

Панель, которую видите только вы
То, что поймает станция, на map.flights видит только её владелец. Не другие пользователи и не посетители карты. Публично о дронах не выходит ничего: ни карты, ни серийного номера, ни местоположения. Владелец видит всё, потому что это расшифровал его собственный приёмник, — и только это: если тот же дрон услышит другая станция, её запись к нему на панель никогда не попадёт.
Наверху — «Прямо сейчас», 3D-карта дронов, которых станция слышала за последние две минуты. Каждый висит на своей высоте на тонких нитях до земли, так что сразу видно, над каким местом он летит и как высоко. Пилота мы рисуем булавкой с кольцом вокруг, а между ним и дроном проходит линия с измеренным расстоянием. Дроны, услышанные несколько часов назад, остаются на карте точкой на последнем положении, окрашенной по тому, как давно это было.
Ниже — полёты за день: сколько их было, сколько разных дронов, самый высокий и самый долгий полёт и временная шкала, на которой у каждого дрона свой цвет. Кнопка «Воспроизвести весь день» запускает все полёты дня разом в одной 3D-сцене — в десять, шестьдесят или триста раз быстрее. Тишина между полётами пропускается, так что целый день над станцией проходит за несколько минут, а если два дрона летали одновременно, каждый разлетается своим цветом.

По серийному номеру мы узнаём производителя. Модель по нему не угадываем: публичной таблицы с понятной лицензией, которая бы это говорила, не существует, поэтому рядом с дроном стоит только то, что он сам о себе передал.
У станции может смениться и владелец. Новый тогда увидит только то, что она поймала с того момента, как стала его, а полёты прежнего останутся для него скрытыми. И не каждая запись — настоящий полёт. Такую, с которой не справился бы ни один реальный дрон, — с высотой, скачущей быстрее, чем способен набирать любой мультикоптер, или с кружением дольше, чем держит аккумулятор, — панель помечает как недостоверную и в рекорды дня не засчитывает. При этом ничего не удаляется.
Один полёт в разборе
Щелчок по полёту открывает его на отдельной странице: трек в 3D с завесой до самой земли, плеер и моменты полёта. Взлёт, наивысшая точка, самый быстрый участок, место дальше всего от пилота и конец записи. Клавиши от 1 до 5 сразу переносят туда камеру. Остановленный полёт запоминает время в адресе, так что сохранённая ссылка в следующий раз откроет ровно эту секунду.
Под картой — барограмма, высота над рельефом на протяжении всего полёта, а поверх неё пунктирная линия на 120 метрах. Это граница открытой категории, в которой летает большинство дронов. Линия там только для ориентира: в другой категории или над высоким препятствием дрону можно и выше, а этого станция по передаче не определит. Поэтому у нас эта линия никого ни в чём не обвиняет.

Дрон сообщает не одну высоту, и ни одна из них не является высотой над землёй под ним. Высота по GPS отсчитывается от математической формы Земли, барометрическая меняется с погодой, а последнюю дрон считает от места, откуда взлетел. Над холмом любая из них может отличаться от действительности на десятки метров. Поэтому высоту над рельефом мы вычисляем по собственной цифровой модели местности, а сообщённую рисуем рядом тонкой линией. Мы их никогда не смешиваем.
Трек можно показать и точками отдельных сообщений, окрашенными по высоте над рельефом или по скорости. По ним видно, где сообщения пропадали, где дрон висел на месте и где ускорился. А камера умеет следовать за дроном, лететь за ним или посмотреть глазами пилота — с того места, где он стоял, вверх на дрон.

Целый день над вашей станцией проходит за несколько минут: тишина между полётами пропускается, а дроны, летавшие одновременно, разлетаются каждый своим цветом.
