9.3. Kabeln och bildrutan

De två lägsta lagren i stacken är lättast att ta för givna på kameran, eftersom allt de gör sker inuti chippet och kameran hanterar dem utan att någon Python-kod är inblandad. De är ändå värda en kort genomgång, eftersom de förklarar vad ”lokalt nätverk” betyder och var gränsen mot resten av infrastrukturen börjar.

9.3.1. Det fysiska lagret

Det understa lagret är själva signaleringen – ledningarna, optiska fibrer eller radiovågor som bär bitar mellan två enheter. Ethernet över partvinnade kablar kodar varje bit som en spänningsövergång med fast hastighet. Wi-Fi modulerar samma bitar på en radiobärvåg i 2,4 GHz- eller 5 GHz-bandet. Båda producerar en ström av binära siffror mellan två maskinvaror; båda är den sortens detalj som kamerans kisel hanterar utan att programvaran behöver tänka på det.

Ur ett Python-skripts perspektiv är det fysiska lagret ”länken är uppe” eller ”länken är nere”. Modulen network rapporterar det tillståndet genom sin metod isconnected() på Wi-Fi-gränssnittet och genom länkstatusen på ett trådbundet Ethernet-gränssnitt. Utöver det är allt annat som detta lager gör dolt.

9.3.3. Vad kameran exponerar

Kameran har en MAC-adress för varje nätverksgränssnitt den har – en Wi-Fi-adress om kameran har trådlöst stöd, en Ethernet-adress om kortet har motsvarande port. Modulen network ger åtkomst till den via network_interface.config("mac") på det gränssnittsobjekt som applikationen använder, när den behöver läsa adressen. Vissa applikationer behöver det, till exempel för att registrera enheten i ett flotthanteringssystem. I övrigt är detta den enda ratt som länklagret överlämnar till Python.

Allt annat – inramningen, själva MAC-trafiken på ledningen eller i luften, förhandlingen mellan kameran och accesspunkten om vilken kanal och hastighet som ska användas – sker helt och hållet inuti den trådlösa maskinvaran eller Ethernet-maskinvaran. Nästa sida täcker det enda ställe där ett Python-skript faktiskt har ett ord med i laget i länklagret: att tala om för kameran vilket nätverk den ska ansluta till.