9.3. Кабель и кадр

Два самых нижних уровня стека на камере проще всего воспринимать как должное, потому что всё, что они делают, происходит внутри чипа, и камера обрабатывает их без участия какого-либо кода на Python. Тем не менее, краткий обзор им стоит уделить, поскольку они объясняют, что означает «локальная сеть» и где начинается граница с остальной инфраструктурой.

9.3.1. Физический уровень

Нижний уровень – это собственно передача сигналов: провода, оптоволокно или радиоволны, переносящие биты между двумя устройствами. Ethernet по витой паре кодирует каждый бит как переход напряжения с фиксированной скоростью. Wi-Fi модулирует те же биты на радионесущую в диапазоне 2,4 ГГц или 5 ГГц. Оба формируют поток двоичных цифр между двумя аппаратными устройствами; оба относятся к тем деталям, которые кремний камеры обрабатывает без необходимости задумываться об этом на уровне программного обеспечения.

С точки зрения скрипта на Python физический уровень – это «канал поднят» или «канал не работает». Модуль network сообщает об этом состоянии через метод isconnected() на интерфейсе Wi-Fi и через состояние канала на проводном интерфейсе Ethernet. Всё остальное, что делает этот уровень, скрыто.

9.3.3. Что предоставляет камера

У камеры есть MAC-адрес для каждого её сетевого интерфейса: адрес Wi-Fi, если камера поддерживает беспроводную связь, и адрес Ethernet, если на плате есть соответствующий порт. Модуль network даёт к нему доступ через network_interface.config("mac") на том объекте интерфейса, который использует приложение, когда нужно прочитать адрес. Некоторым приложениям это необходимо, например, чтобы зарегистрировать устройство в системе управления парком устройств. В остальном это единственный рычаг, который канальный уровень передаёт в распоряжение Python.

Всё остальное – формирование кадров, фактический MAC-трафик в проводе или в эфире, согласование между камерой и точкой доступа о том, какой канал и скорость использовать – происходит полностью внутри беспроводного или Ethernet-оборудования. На следующей странице рассматривается единственное место, где скрипт на Python действительно может повлиять на канальный уровень: указание камере, к какой сети подключиться.