network — konfiguracija mreže

Ovaj modul pruža mrežne upravljačke programe i konfiguraciju usmjeravanja. Za korištenje ovog modula mora biti instalirana MicroPython varijanta/verzija s mrežnim mogućnostima. Mrežni upravljački programi za specifični hardver dostupni su unutar ovog modula i koriste se za konfiguriranje hardverskih mrežnih sučelja. Mrežne usluge koje pružaju konfigurirana sučelja zatim su dostupne za upotrebu putem modula socket.

Na primjer:

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()

Zamijenite WLAN s WINC (naslijeđeno WiFi proširenje) ili LAN (ugrađeni Ethernet) prema potrebi za kameru. Visokorazinski obrazac stvaranje -> aktiviranje -> povezivanje -> upotreba utičnica isti je u sva tri slučaja.

Sučelje zajedničkog mrežnog adaptera

Ovaj odjeljak opisuje (implicitnu) apstraktnu osnovnu klasu za sve klase mrežnih sučelja koje implementiraju MicroPython ports za različiti hardver. To znači da MicroPython zapravo ne pruža klasu AbstractNIC, ali svaka stvarna NIC klasa, kako je opisano u sljedećim odjeljcima, implementira metode kako je ovdje opisano.

class network.AbstractNIC(id: int | None = None, *args: Any, **kwargs: Any) None

Stvara objekt mrežnog sučelja. Parametri ovise o mrežnom sučelju. Ako postoji više sučelja istog tipa, prvi parametar treba biti id.

active(is_active: bool | None = None, /) bool

Uključuje ili isključuje mrežno sučelje.

Bez argumenta vraća trenutno stanje – True dok je sučelje aktivno, inače False.

Proslijedite True za aktiviranje sučelja: uključuje napajanje / resetira osnovni mrežni kontroler, učitava firmware gdje je primjenjivo i podiže IP stog na ovom sučelju. Naknadni pozivi koji komuniciraju s mrežom (connect(), scan(), ipconfig(), …) zahtijevaju da sučelje bude aktivno.

Proslijedite False za deaktiviranje sučelja: ruši IP stog i oslobađa resurse upravljačkog programa. Na bežičnim sučeljima to također prekida vezu sa svakom trenutno pridruženom mrežom.

Ponašanje pri pozivanju drugih metoda na neaktivnom sučelju je nedefinirano.

connect(service_id: str | None = None, key: str | None = None, *, bssid: bytes | None = None, **kwargs: Any) None

Povezuje sučelje s mrežom. Ova metoda je opcionalna i dostupna samo za sučelja koja nisu „uvijek povezana”. Ako nisu zadani parametri, povezuje se sa zadanom (ili jedinom) uslugom. Ako je zadan jedan parametar, on je primarni identifikator usluge na koju se treba povezati. Može biti popraćen ključem (lozinkom) potrebnim za pristup navedenoj usluzi. Mogu postojati dodatni proizvoljni parametri samo u obliku ključnih riječi, ovisno o tipu mrežnog medija i/ili određenom uređaju. Parametri se mogu koristiti za: a) specificiranje alternativnih tipova identifikatora usluge; b) pružanje dodatnih parametara veze. Za različite tipove medija postoje različiti skupovi unaprijed definiranih/preporučenih parametara, među kojima su:

  • WiFi: ključna riječ bssid za povezivanje s određenim BSSID-om (MAC adresa)

disconnect() None

Prekida vezu s mrežom.

isconnected() bool

Vraća True ako je veza s mrežom uspostavljena, inače vraća False.

scan(**kwargs: Any) List[Tuple]

Skenira dostupne mrežne usluge/veze. Vraća popis nizova s otkrivenim parametrima usluge. Za različite mrežne medije postoje različite varijante unaprijed definiranih/preporučenih formata niza, među kojima su:

  • WiFi: (ssid, bssid, channel, RSSI, security, hidden). Mogu postojati dodatna polja specifična za određeni uređaj.

Funkcija može prihvatiti dodatne argumente ključnih riječi za filtriranje rezultata skeniranja (npr. skeniranje određene usluge, na određenom kanalu, za usluge određenog skupa itd.) te za utjecaj na trajanje skeniranja i druge parametre. Gdje je moguće, nazivi parametara trebali bi odgovarati onima u connect().

status(param: str | None = None) Any

Ispituje informacije o dinamičkom statusu sučelja. Kada se pozove bez argumenta, povratna vrijednost opisuje status mrežne veze. U suprotnom, param treba biti niz znakova koji imenuje određeni parametar statusa koji se dohvaća.

Povratni tipovi i vrijednosti ovise o mrežnom mediju/tehnologiji. Neki od parametara koji mogu biti podržani su:

  • WiFi STA: koristite 'rssi' za dohvaćanje RSSI signala AP-a

  • WiFi AP: koristite 'stations' za dohvaćanje popisa svih STA-ova povezanih s AP-om. Popis sadrži nizove oblika (MAC, RSSI).

ipconfig(param: str) Any
ipconfig(**kwargs: Any) None

Dohvaća ili postavlja parametre IP-konfiguracije sučelja specifične za sučelje. Podržani parametri su sljedeći (dostupnost određenog parametra ovisi o verziji i specifičnom mrežnom sučelju):

  • dhcp4 (True/False) dobiva IPv4 adresu, pristupnik i dns poslužitelj putem DHCP-a. Ova metoda ne blokira i ne čeka da se adresa dobije. Za provjeru je li adresa dobivena, koristite svojstvo samo za čitanje has_dhcp4.

  • gw4 Dohvaća/postavlja zadani IPv4 pristupnik.

  • dhcp6 (True/False) dobiva DNS poslužitelj putem stateless DHCPv6. Dobivanje IP adresa putem DHCPv6 trenutno nije implementirano.

  • autoconf6 (True/False) dobiva stateless IPv6 adresu putem mrežnog prefiksa dijeljenog u oglašavanjima usmjerivača. Za provjeru je li stateless adresa dobivena, koristite svojstvo samo za čitanje has_autoconf6.

  • addr4 (npr. 192.168.0.4/24) dobiva trenutnu IPv4 adresu i mrežnu masku kao (ip, subnet)-niz, bez obzira na to kako je ta adresa dobivena. Ova metoda može se koristiti za postavljanje statične IPv4 adrese bilo kao (ip, subnet)-niz ili u CIDR-notaciji.

  • addr6 (npr. fe80::1234:5678) dobiva popis trenutnih IPv6 adresa kao (ip, state, preferred_lifetime, valid_lifetime)-niz. To uključuje link-local, slaac i statične adrese. preferred_lifetime i valid_lifetime predstavljaju preostali valjani i preferirani vijek trajanja svake IPv6 adrese, u sekundama. state označava trenutno stanje adrese:

    • 0x08 - 0x0f označava da je adresa privremena, brojeći broj poslanih proba.

    • 0x10 Adresa je zastarjela (ali još uvijek valjana)

    • 0x30 Adresa je preferirana (i valjana)

    • 0x40 Adresa je duplicirana i ne može se koristiti.

    Ova metoda može se koristiti za postavljanje statične IPv6 adrese, postavljanjem ovog parametra na adresu, poput fe80::1234:5678.

ifconfig(config: Tuple[str, str, str, str] | None = None) Tuple[str, str, str, str] | None

Napomena

Ova funkcija je zastarjela, umjesto nje koristite ipconfig().

Dohvaća/postavlja parametre mrežnog sučelja na razini IP-a: IP adresa, maska podmreže, pristupnik i DNS poslužitelj. Kada se pozove bez argumenata, ova metoda vraća 4-člana niza s gore navedenim informacijama. Za postavljanje gore navedenih vrijednosti, proslijedite 4-člana niza s potrebnim informacijama. Na primjer:

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

Dohvaća ili postavlja opće parametre mrežnog sučelja. Ove metode omogućuju rad s dodatnim parametrima izvan standardne IP konfiguracije (kojom se bavi ipconfig()). To uključuje parametre specifične za mrežu i hardver. Za postavljanje parametara treba koristiti sintaksu argumenata ključnih riječi, a više parametara može se postaviti odjednom. Za ispitivanje, naziv parametra treba navesti u navodnicima kao niz znakova, a samo jedan parametar može se ispitati odjednom:

# 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'))

Implementacije specifičnih mrežnih klasa

Sljedeće konkretne klase implementiraju sučelje AbstractNIC i pružaju način upravljanja mrežnim sučeljima različitih vrsta.

Mrežne funkcije

Sljedeće su funkcije dostupne u network modulu.

network.country(code: str | None = None) str | None

Dohvaća ili postavlja dvoslovni ISO 3166-1 Alpha-2 kod države koji će se koristiti za radio usklađenost.

Ako je zadan parametar code, država će se postaviti na ovu vrijednost. Ako se funkcija pozove bez parametara, vraća trenutnu državu.

Zadani kod "XX" predstavlja „svjetsku” regiju.

network.hostname(name: str | None = None) str | None

Dohvaća ili postavlja naziv domaćina koji će identificirati ovaj uređaj na mreži. Koristit će ga sva sučelja.

Ovaj naziv domaćina koristi se za:
  • Slanje DHCP poslužitelju u zahtjevu klijenta. (Ako se koristi DHCP)

  • Emitiranje putem mDNS-a. (Ako je omogućeno)

Ako je zadan parametar name, naziv domaćina će se postaviti na ovu vrijednost. Ako se funkcija pozove bez parametara, vraća trenutni naziv domaćina.

Promjena naziva domaćina obično se primjenjuje samo tijekom povezivanja. Za DHCP to je zato što je naziv domaćina dio DHCP zahtjeva klijenta, a implementacija mDNS-a u većini verzija inicijalizira naziv domaćina samo jednom tijekom povezivanja. Iz tog razloga morate postaviti naziv domaćina prije aktiviranja/povezivanja mrežnih sučelja.

Duljina naziva domaćina ograničena je na 32 znaka. MicroPython ports mogu odabrati postavljanje nižeg ograničenja iz razloga memorije. Ako se zadani naziv ne uklapa, podiže se ValueError.

Zadani naziv domaćina obično je naziv ploče.

network.ipconfig(param: str) Any
network.ipconfig(**kwargs: Any) None

Dohvaća ili postavlja globalne parametre IP-konfiguracije. Podržani parametri su sljedeći (dostupnost određenog parametra ovisi o verziji i specifičnom mrežnom sučelju):

  • dns Dohvaća/postavlja DNS poslužitelj. Ova metoda može podržavati i IPv4 i IPv6 adrese.

  • prefer (4/6) Određuje koji tip adrese vratiti ako naziv domene ima i A i AAAA zapise. Imajte na umu da to ne briše lokalnu DNS predmemoriju, tako da se sve prethodno dobivene adrese možda neće promijeniti.