9.3. Cablul și cadrul

Cele mai de jos două straturi ale stivei sunt cele mai ușor de luat de bune pe cameră, deoarece tot ceea ce fac se petrece în interiorul cipului, iar camera le gestionează fără să fie nevoie de cod Python. Merită totuși o scurtă trecere în revistă, fiindcă explică ce înseamnă „rețea locală” și unde începe granița spre restul infrastructurii.

9.3.1. Stratul fizic

Stratul de bază este semnalizarea propriu-zisă – firele, fibrele optice sau undele radio care transportă biți între două dispozitive. Ethernet peste cabluri torsadate codifică fiecare bit ca o tranziție de tensiune la o rată fixă. Wi-Fi modulează aceiași biți pe o purtătoare radio în banda de 2.4 GHz sau 5 GHz. Ambele produc un flux de cifre binare între două componente hardware; ambele sunt genul de detaliu pe care siliciul camerei îl gestionează fără ca software-ul să fie nevoit să se gândească la el.

Din perspectiva unui script Python, stratul fizic este „legătura este activă” sau „legătura este inactivă”. Modulul network raportează această stare prin metoda sa isconnected() pe interfața Wi-Fi și prin starea legăturii pe o interfață Ethernet cablată. Dincolo de asta, tot ce face acest strat rămâne ascuns.

9.3.3. Ce expune camera

Camera are o adresă MAC pentru fiecare interfață de rețea pe care o are – una Wi-Fi dacă aceasta are suport wireless, una Ethernet dacă placa are portul corespunzător. Modulul network oferă acces la ea prin network_interface.config("mac") pe oricare obiect de interfață pe care îl folosește aplicația, atunci când are nevoie să citească adresa. Unele aplicații au nevoie de asta, de exemplu pentru a înregistra dispozitivul într-un sistem de management al flotei. În rest, acesta este singurul reglaj pe care stratul de legătură îl predă Python-ului.

Tot restul – încadrarea, traficul MAC propriu-zis pe fir sau prin aer, negocierea dintre cameră și punctul de acces privind canalul și rata de folosit – se petrece în întregime în interiorul hardware-ului wireless sau Ethernet. Pagina următoare acoperă singurul loc în care un script Python chiar are un cuvânt de spus în stratul de legătură: să-i indice camerei la ce rețea să se alăture.