Недавний перелёт я провел, пытаясь выяснить, что можно сделать, подключившись к Wi-Fi на борту самолета, но без доступа к Интернету.

Я возвращался домой со Strange Loop прямым рейсом из Сент-Луиса в Окленд. Это достаточно долгий перелет, и я планировал купить доступ в Интернет за 8 долларов и поработать, но Wi-Fi-портал Southwest не принял никакой формы оплаты. Веб-страница не выдала мне никаких полезных сообщений об ошибках, поэтому я открыл инструменты разработчика в браузере, чтобы посмотреть, смогу ли я выяснить, что же не так.

Я нашел ошибочный запрос, но он не дал никаких полезных подсказок, которые указали бы мне путь к решению. Однако, там же я увидел еще один запрос, который привлек мое внимание: повторяющийся успешный запрос current.json.

Вот пример ответа на один из таких запросов:

{
  "sat_commlink_portal": {
    "status": "conn_ok",
    "time": "Sun Sep 24 22:02:19 2023"
  },
  "pcent_flt_complete": 33,
  "altVal": "35998",
  "lon": "-100.755",
  "satcomm_status": {
    "commlink": "active",
    "linkparams": "not-stale"
  },
  "dtzone": "PDT",
  "within_us": true,
  "etad": "06:19 PM",
  "lat": "40.201",
  "gspdVal": "487",
  "ttgc": "2h 25m",
  "dist_remain": "1167",
  "actime24": "15:54"
}

Похоже, именно эти данные нужны для страницы статуса рейса бортового Wi-Fi-портала. Поскольку это была одна из немногих вещей, к которым я мог получить доступ в этой сети, я решил извлечь из нее максимум пользы.

Я воспользовался функцией браузера "Copy as cURL", чтобы быстро получить команду для запроса. Между прочим, эта функция присутствует в Firefox и всех браузерах на основе Chromium, и она очень удобна, если вам нужно повторить запросы вашего браузера и вы хотите отправить все те же заголовки.

После некоторых экспериментов я обнаружил, что cookie или заголовки, включенные в запрос, не является обязательными, а это означает, что я могу получить данные с помощью простого curl 'https://getconnected.southwestwifi.com/current.json'. Я настроил цикл для вывода данных в лог-файл:

watch -n 30 "curl https://getconnected.southwestwifi.com/current.json | jq -c >> flight-logs"

Я не знал, что буду делать с данными на этом этапе, но сразу начал их собирать, чтобы потом иметь как можно больше данных.

По ходу дела я решил повнимательнее посмотреть на ответы, чтобы понять, с чем именно мне предстоит работать. Вот пример ответа, снабженный моими предположениями о том, что представляют собой поля:

{
  // Похоже на информацию о спутниковом интернет-соединении.
  "sat_commlink_portal": {
    // С соединением всё хорошо!
    "status": "conn_ok",
    // Я не уверен что это за время.
    // Оно вообще не меняется.
    "time": "Sun Sep 24 22:02:19 2023"
  },

  // Процент прогресса текущего полета.
  // Я не знаю, про расстояние это или про время.
  "pcent_flt_complete": 33,

  // Текущая высота.
  "altVal": "35998",

  // Текущие координаты.
  "lat": "40.201",
  "lon": "-100.755",

  // Выглядит как (дополнительная?) информация о спутниковом интернет-соединении.
  "satcomm_status": {
    // Соединение активно!
    "commlink": "active",
    // Что-то не просрочено!
    "linkparams": "not-stale"
  },

  // Часовой пояс пункта назначения этого рейса — PDT.
  "dtzone": "PDT",

  // Этот рейс в пределах США.
  "within_us": true,

  // Наше предполагаемое время прибытия в пункт назначения.
  "etad": "06:19 PM",

  // Наша текущая скорость относительно земли.
  "gspdVal": "487",

  // Примерное оставшееся время. Может быть, "время до контакта с землей"?
  "ttgc": "2h 25m",

  // Оставшееся расстояние полета в милях.
  "dist_remain": "1167",

  // Текущее время в некотором часовом поясе.
  "actime24": "15:54"
}

По большей части это просто, но мне интересно несколько частей:

  • В чем разница между sat_commlink_portal.status и satcomm_status.commlink?

  • pcent_flt_complete — это расстояние или расчетное время?

  • Насколько сильно меняются значения altVal, etad и gspdVal в течение полета?

  • Что такое ac в actime24? Я бы подумал "aircraft", но в данном случае это время — это текущее время в пункте назначения, а не текущее время в месте нахождения самолета.

В течение полета я работал над скриптами, которые могли бы визуализировать некоторые данные после того, как я закончу их сбор. Вот что у меня получилось:

Изменение высоты с течением времени

Говоря об этом, мне больше всего было любопытно посмотреть, насколько зашумленными будут данные о высоте.

Трудно увидеть шум на таком большом расстоянии. Вот те же данные, но без учета снижения самолета:

Согласно этим данным, высота самолета колебалась всего лишь примерно на 20-30 футов. Это более стабильно, чем я ожидал! Я предполагал, что увижу здесь гораздо больше изменений, но я не знаю, насколько это нормально, и не знаю, насколько точны эти данные.

Изменение расчетного времени прибытия с течением времени

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

Мне любопытно, что было бы, если бы у нас была задержка приземления из-за погоды. Будет ли заявленное расчетное время прибытия постепенно увеличиваться по мере того, как будет расти уверенность авиакомпании в задержке, или оно резко возрастет ближе к концу?

Изменение скорости с течением времени

Она также была стабильной, как и ожидалось.

дополнение: Первоначально я обозначил эти скорости как мили в час, но некоторые читатели HN услужливо отметили, что это, скорее всего, узлы.

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

Ничего особенно полезного или удивительного я здесь не нашел, но провести полет было весело!

Комментарии (21)


  1. AgentFire
    04.10.2023 16:48
    +3

    прикольно. вот бы любой самолёт так умел


    1. gxcreator
      04.10.2023 16:48
      +2

      Качаете GPSTest на телефон и просто сами смотрите эти данные, лучше сидеть у окна.


      1. Didimus
        04.10.2023 16:48

        Использовал навигатор с навителем, он показывал скорость 600+ км/ч, кстати


  1. baldr
    04.10.2023 16:48
    +6

    Я бы попробовал ещё поменять что-нибудь, например, высоту и отправить обратно через POST. А вдруг?


    1. kvazimoda24
      04.10.2023 16:48
      +4

      Лучше сразу время менять :)


    1. GritsanY
      04.10.2023 16:48
      +1

      Есть целый фильм, почему нельзя так делать :)

      https://www.kinopoisk.ru/film/1368311/ Чёрный ящик


      1. DrGluck07
        04.10.2023 16:48

        Да ничего не будет. Вряд ли можно из развлекательной сети добраться до шины ARINC в том смысле, чтоб можно было вмешиваться в её работу. А эти данные в сети гуляют наверное для отображения их на мониторах пассажиров.

        Кстати фильм хороший. Очень рекомендую всем. Как и одни из лучших фильмов про авиацию "Whisky Romeo Zulu"


        1. niko_zvt
          04.10.2023 16:48
          +1

          Так в этом и будет «забава», если дотянуться до всех мониторов и отобразить резкое изменение скорости/высоты. Особо впечатлительным на мониторы лучше не смотреть.


  1. Firsto
    04.10.2023 16:48
    +1

    Первоначально я обозначил эти скорости как мили в час, но некоторые читатели HN услужливо отметили, что это, скорее всего, узлы.

    Так, пждите, это разве не одно то же? (ʘ‿ʘ)


    1. ris58h Автор
      04.10.2023 16:48

      Думаю, речь про милю и морскую милю. Это не одно и то же.


      1. unclear0122
        04.10.2023 16:48
        +2

        Я предположу, что координаты и параметры полета система берет с шины ARINC-429. В этом случае скрость будет в узлах (умножьте на 1,852 и получите км/ч). Высота в футах, но тут есть нюансы: может быть AGL (выше уровня суши), а может быть AMSL (выше среднего уровня моря). Высота AGL может давать заметную "шероховатость" в зависимост от повехности, над которой проходит полет, AMSL, как правило, дает более пологий график.

        Оставшееся расстояние обычно считается по кратчайшей дуге от текущего местонахождения до места назначения.

        Теперь про статусы. Опять же предположу, чтозsat_commlink_portal - это статус доступности наземного портала авторизации/платежей и т.п. А вот satcomm_status может быть статусом спутникового модема.

        Все эти данные нужны чтобы корректно показывать положение самолета и статус доступа к Интернету на портале в самолете.

        По поводу POST и т.п.: софт, устанавливаемый на борту самолета проходит сертификацию на соответствия требованиям безопасности. Развлекательные системы имеют исключтельно доступ на чтение с шины ARINC-429 и изолированы от систем управления полетом. Максимум, чего вы добъетесь своим POST запросом, это переместите отметку самолета на карте портала в произвольную точку, хотя я и в этом сомневаюсь, ибо неспользуемые методы должны быть заблокированы.


        1. santjagocorkez
          04.10.2023 16:48
          +2

          Скорость в узлах — это всегда скорость относительно среды, а не точки на карте. Водное судно может делать 16 узлов прямолинейного хода и при этом оставаться в одной и той же географической координате.

          То же самое с самолётом: он может, к примеру, иметь минимальную скорость отрыва от земли, выраженную в узлах. И при этом в каждом рейсе координатная скорость для этой же величины будет разная: то ветер попутный, то боковой, то встречный, и каждый раз ещё и скорость этого ветра разная. Тут я пока оставил в стороне температуру воздуха, которая тоже немного влияет на минимальную скорость отрыва (но уже на скорость в узлах).

          Определение, даваемое нынче через угловую минуту меридиана, противоречит историческому смыслу этой единицы.


          1. unclear0122
            04.10.2023 16:48
            +5

            Нет, скорость не всегда указавается относительно среды (в случае самолета, воздуха).

            Бывает приборная скорость, а бывает путевая. В примере выше gspd, что с большой степенью вероятности указывает на скорость относительно земли (ground speed), то есть скорость путевую.

            Не забывайте, для чего передаются эти данные - для отображения пассажиру. Пассажиру истинная воздушная скорость без надобности, ему интересна скорость приближения к аэропорту назначения.


          1. DrGluck07
            04.10.2023 16:48

            Дополню предыдущих ораторов. У самолёта минимум три скорости: IAS (indicated airspeed), TAS (true airspeed) и GS (ground speed).

            Обычно пилотов интересует только IAS, она же и отображается на PFD, т.е. на самом главном дисплее, на котором отображается авиагоризонт, высота и ещё некоторые полезные штуки. Но IAS зависит не только от скорости относительно воздуха, но и от высоты полёта. Поэтому на эшелоне IAS маленькая и там вообще отображаются не узлы, а махи.

            TAS отображает реальную скорость относительно воздуха. Поэтому на эшелоне TAS может быть в два раза больше, чем IAS.

            А GS это скорость относительно земли. Вычисляется по GPS и/или IRS. В полёте помогает оценить скорость ветра.


        1. DrGluck07
          04.10.2023 16:48

          Высоты AGL на эшелоне не будет. Потому что радиовысотомер показывает высоту меньше чем 2500 футов. Зато он иногда может показать что-то вроде 1000 футов на эшелоне, сработав на пролетающем самолёте.

          Скорость на графике скорее всего GS, а может TAS. Потому что IAS на эшелоне будет меньше 300 узлов.


  1. PavPavel
    04.10.2023 16:48

    Интересно увидеть скрипт, который графики рисует


  1. zartdinov
    04.10.2023 16:48

    Есть похожий фильм про авикатастрофу, с таким же любопытным пассажиром.


  1. truebest
    04.10.2023 16:48

    pcent_flt_complete - percent of flight complete

    Процент выполнения полета считается по времени.


  1. DrGluck07
    04.10.2023 16:48

    Почему удивляет изменение высоты 25-30 футов? Автопилот должен довольно точно выдерживать высоту. Учитывая, что до встречного самолёта всего лишь 1000 футов по вертикали.


    1. altman
      04.10.2023 16:48

      Видимо была хорошая погода и спокойная атмосфера, потому что когда болтанка и просят пристегнуть ремни, самолёт может ощутимо терять несколько десятков метров высоты очень быстро. Вот это как раз было бы интересно увидеть, на сколько реально "проваливается" самолёт в "воздушную яму". Другое дело, что неизвестна частота обновления, сомневаюсь что она в реальном времени или хотя бы меньше минуты, скорее всего минут 5...


  1. PamanK0stia
    04.10.2023 16:48

    Неплохо) жаль, что не во всех самолетах так