network — hálózati konfiguráció¶
Ez a modul hálózati drivereket és útválasztási konfigurációt biztosít. A modul használatához egy hálózati képességekkel rendelkező MicroPython variánst/buildet kell telepíteni. Az adott hardverhez tartozó hálózati driverek ezen a modulon belül érhetők el, és a hardveres hálózati interfész(ek) konfigurálására szolgálnak. A konfigurált interfészek által nyújtott hálózati szolgáltatások ezután a socket modulon keresztül érhetők el.
Például:
import network
import socket
import time
nic = network.WLAN(network.WLAN.IF_STA)
nic.active(True)
nic.connect("your-ssid", "your-key")
print("Waiting for connection...")
while not nic.isconnected():
time.sleep(1)
print(nic.ipconfig("addr4"))
# Open a TCP socket as usual.
addr = socket.getaddrinfo("micropython.org", 80)[0][-1]
s = socket.socket()
s.connect(addr)
s.send(b"GET / HTTP/1.1\r\nHost: micropython.org\r\n\r\n")
data = s.recv(1000)
s.close()
Cserélje le a WLAN osztályt a WINC (régebbi WiFi shield) vagy a LAN (beépített Ethernet) osztályra a kamerának megfelelően. A létrehozás -> aktiválás -> csatlakozás -> socketek használata magas szintű minta mindhárom esetben ugyanaz.
Közös hálózati adapter interfész¶
Ez a szakasz egy (vélelmezett) absztrakt alaposztályt ír le, amely a MicroPython portok által különböző hardverekhez megvalósított összes hálózati interfész osztály alapja. Ez azt jelenti, hogy a MicroPython valójában nem biztosít AbstractNIC osztályt, de minden tényleges NIC osztály – ahogy a következő szakaszokban leírjuk – megvalósítja az itt ismertetett metódusokat.
- class network.AbstractNIC(id: int | None = None, *args: Any, **kwargs: Any) None¶
Példányosít egy hálózati interfész objektumot. A paraméterek a hálózati interfésztől függenek. Ha egy típusból több interfész is van, az első paraméter az
idlegyen.- active(is_active: bool | None = None, /) bool¶
Bekapcsolja vagy kikapcsolja a hálózati interfészt.
Argumentum nélkül visszaadja az aktuális állapotot –
True, amíg az interfész aktív, egyébkéntFalse.Adjon át
Trueértéket az interfész aktiválásához: bekapcsolja / visszaállítja az alapul szolgáló hálózati vezérlőt, betölti a firmware-t, ahol alkalmazható, és felépíti az IP veremet ezen az interfészen. A hálózattal kommunikáló későbbi hívások (connect(),scan(),ipconfig(), …) megkövetelik, hogy az interfész aktív legyen.Adjon át
Falseértéket az interfész deaktiválásához: lebontja az IP veremet és felszabadítja a driver erőforrásait. Vezeték nélküli interfészeken ez egyúttal leválasztja minden éppen csatlakozott hálózatról.Más metódusok inaktív interfészen való meghívásának viselkedése nem definiált.
- connect(service_id: str | None = None, key: str | None = None, *, bssid: bytes | None = None, **kwargs: Any) None¶
Csatlakoztatja az interfészt egy hálózathoz. Ez a metódus opcionális, és csak azoknál az interfészeknél érhető el, amelyek nem „mindig kapcsolódnak”. Ha nincs megadva paraméter, az alapértelmezett (vagy az egyetlen) szolgáltatáshoz csatlakozik. Ha egyetlen paraméter van megadva, az a csatlakozni kívánt szolgáltatás elsődleges azonosítója. Ezt kísérheti egy kulcs (jelszó), amely az adott szolgáltatáshoz való hozzáféréshez szükséges. További tetszőleges, csak kulcsszóként megadható paraméterek is lehetnek, a hálózati közeg típusától és/vagy az adott eszköztől függően. A paraméterek felhasználhatók a következőkre: a) alternatív szolgáltatásazonosító típusok megadása; b) további csatlakozási paraméterek biztosítása. A különböző közegtípusokhoz eltérő, előre definiált/ajánlott paraméterkészletek tartoznak, többek között:
WiFi: bssid kulcsszó egy adott BSSID-hez (MAC-cím) való csatlakozáshoz
- isconnected() bool¶
Trueértéket ad vissza, ha csatlakozva van a hálózathoz, egyébkéntFalseértéket.
- scan(**kwargs: Any) List[Tuple]¶
Megkeresi az elérhető hálózati szolgáltatásokat/kapcsolatokat. A felfedezett szolgáltatások paramétereit tartalmazó tuple-ök listáját adja vissza. A különböző hálózati közegekhez eltérő, előre definiált/ajánlott tuple-formátumok tartoznak, többek között:
WiFi: (ssid, bssid, channel, RSSI, security, hidden). További mezők is lehetnek, az adott eszközre jellemzően.
A függvény további kulcsszavas argumentumokat is elfogadhat a keresési eredmények szűréséhez (pl. egy adott szolgáltatás keresése, egy adott csatornán, egy adott halmaz szolgáltatásai stb.), valamint a keresés időtartamának és más paramétereknek a befolyásolásához. Ahol lehetséges, a paraméternevek egyezzenek a connect() függvényben szereplőkkel.
- status(param: str | None = None) Any¶
Lekérdezi az interfész dinamikus állapotinformációit. Argumentum nélkül meghívva a visszatérési érték a hálózati kapcsolat állapotát írja le. Egyébként a param egy sztring legyen, amely megnevezi a lekérendő állapotparamétert.
A visszatérési típusok és értékek a hálózati közegtől/technológiától függenek. Néhány támogatott paraméter a következő lehet:
WiFi STA: használja az
'rssi'értéket az AP jelének RSSI-jének lekéréséhezWiFi AP: használja a
'stations'értéket az AP-hoz csatlakozott összes STA listájának lekéréséhez. A lista (MAC, RSSI) formájú tuple-öket tartalmaz.
- ipconfig(param: str) Any¶
- ipconfig(**kwargs: Any) None
Lekérdezi vagy beállítja az interfész-specifikus IP-konfigurációs interfész paramétereket. A támogatott paraméterek a következők (egy adott paraméter elérhetősége a porttól és az adott hálózati interfésztől függ):
dhcp4(True/False) IPv4-cím, átjáró és dns szerver megszerzése DHCP-n keresztül. Ez a metódus nem blokkol és nem vár a cím megszerzésére. Annak ellenőrzéséhez, hogy megszerzésre került-e cím, használja a csak olvashatóhas_dhcp4tulajdonságot.gw4Lekérdezi/beállítja az IPv4 alapértelmezett átjárót.dhcp6(True/False) DNS szerver megszerzése állapot nélküli DHCPv6-on keresztül. Az IP-címek DHCPv6-on keresztüli megszerzése jelenleg nincs megvalósítva.autoconf6(True/False) állapot nélküli IPv6-cím megszerzése a router hirdetésekben megosztott hálózati előtag alapján. Annak ellenőrzéséhez, hogy megszerzésre került-e állapot nélküli cím, használja a csak olvashatóhas_autoconf6tulajdonságot.addr4(pl.192.168.0.4/24) lekéri az aktuális IPv4-címet és hálózati maszkot(ip, subnet)-tuple-ként, függetlenül attól, hogyan szerezték meg ezt a címet. Ezzel a metódussal statikus IPv4-cím is beállítható, akár(ip, subnet)-tuple-ként, akár CIDR-jelölésben.addr6(pl.fe80::1234:5678) lekéri az aktuális IPv6-címek listáját(ip, state, preferred_lifetime, valid_lifetime)-tuple-ként. Ez magában foglalja a link-local, slaac és statikus címeket. Apreferred_lifetimeés avalid_lifetimeaz egyes IPv6-címek fennmaradó érvényes és preferált élettartamát jelöli, másodpercben. Astatea cím aktuális állapotát jelzi:0x08-0x0fjelzi, hogy a cím feltételes, és számolja az elküldött próbák számát.0x10A cím elavult (de még érvényes)0x30A cím preferált (és érvényes)0x40A cím duplikált, és nem használható.
Ezzel a metódussal statikus IPv6-cím is beállítható, ha ezt a paramétert a címre állítja, például
fe80::1234:5678.
- ifconfig(config: Tuple[str, str, str, str] | None = None) Tuple[str, str, str, str] | None¶
Megjegyzés
Ez a függvény elavult, helyette használja az
ipconfig()függvényt.Lekérdezi/beállítja az IP-szintű hálózati interfész paramétereket: IP-cím, alhálózati maszk, átjáró és DNS szerver. Argumentum nélkül meghívva ez a metódus egy 4 elemű tuple-t ad vissza a fenti információkkal. A fenti értékek beállításához adjon át egy 4 elemű tuple-t a szükséges információkkal. Például:
nic.ifconfig(('192.168.0.4', '255.255.255.0', '192.168.0.1', '8.8.8.8'))
- config(param: str) Any¶
- config(**kwargs: Any) None
Lekérdezi vagy beállítja az általános hálózati interfész paramétereket. Ezek a metódusok lehetővé teszik a szabványos IP-konfiguráción (amelyet az
ipconfig()kezel) túlmutató további paraméterekkel való munkát. Ezek hálózat-specifikus és hardver-specifikus paramétereket foglalnak magukban. Paraméterek beállításához a kulcsszavas argumentum szintaxist kell használni, és egyszerre több paraméter is beállítható. Lekérdezéshez a paraméternevet sztringként kell idézőjelek közé tenni, és egyszerre csak egy paraméter kérdezhető le:# Set WiFi access point name (formally known as SSID) and WiFi channel ap.config(ssid='My AP', channel=11) # Query params one by one print(ap.config('ssid')) print(ap.config('channel'))
Konkrét hálózati osztály implementációk¶
A következő konkrét osztályok valósítják meg az AbstractNIC interfészt, és lehetővé teszik a különféle hálózati interfészek vezérlését.
Hálózati függvények¶
A következők a network modulban elérhető függvények.
- network.country(code: str | None = None) str | None¶
Lekérdezi vagy beállítja a rádiós megfelelőséghez használandó kétbetűs ISO 3166-1 Alpha-2 országkódot.
Ha a code paraméter meg van adva, az ország erre az értékre lesz beállítva. Ha a függvényt paraméterek nélkül hívják meg, az aktuális országot adja vissza.
Az alapértelmezett
"XX"kód a „világszintű” régiót jelöli.
- network.hostname(name: str | None = None) str | None¶
Lekérdezi vagy beállítja a hosztnevet, amely ezt az eszközt azonosítja a hálózaton. Ezt az összes interfész használni fogja.
- Ezt a hosztnevet a következőkre használja:
A DHCP szervernek való elküldés a kliens kérésében. (DHCP használata esetén)
Sugárzás mDNS-en keresztül. (Ha engedélyezve van)
Ha a name paraméter meg van adva, a hosztnév erre az értékre lesz beállítva. Ha a függvényt paraméterek nélkül hívják meg, az aktuális hosztnevet adja vissza.
A hosztnév változása jellemzően csak a csatlakozás során kerül alkalmazásra. DHCP esetén ez azért van, mert a hosztnév a DHCP kliens kérésének része, és az mDNS implementációja a legtöbb portban csak egyszer, a csatlakozás során inicializálja a hosztnevet. Ezért a hosztnevet a hálózati interfészek aktiválása/csatlakoztatása előtt kell beállítania.
A hosztnév hossza 32 karakterre van korlátozva. A MicroPython portok memóriaokokból választhatnak alacsonyabb korlátot is. Ha a megadott név nem fér el,
ValueErrorkivétel keletkezik.Az alapértelmezett hosztnév jellemzően a kártya neve.
- network.ipconfig(param: str) Any¶
- network.ipconfig(**kwargs: Any) None
Lekérdezi vagy beállítja a globális IP-konfigurációs paramétereket. A támogatott paraméterek a következők (egy adott paraméter elérhetősége a porttól és az adott hálózati interfésztől függ):
dnsLekérdezi/beállítja a DNS szervert. Ez a metódus mind IPv4, mind IPv6 címeket támogat.prefer(4/6) Megadja, hogy melyik címtípust adja vissza, ha egy tartománynévhez A és AAAA rekord is tartozik. Vegye figyelembe, hogy ez nem törli a helyi DNS gyorsítótárat, így a korábban megszerzett címek esetleg nem változnak.