network — verkkomääritykset¶
Tämä moduuli tarjoaa verkko-ohjaimet ja reitityksen määritykset. Tämän moduulin käyttäminen edellyttää, että asennettuna on verkkominaisuuksilla varustettu MicroPython-variantti/-käännös. Tietyn laitteiston verkko-ohjaimet ovat saatavilla tämän moduulin sisällä, ja niitä käytetään laitteiston verkkorajapintojen määrittämiseen. Määritettyjen rajapintojen tarjoamat verkkopalvelut ovat tämän jälkeen käytettävissä socket-moduulin kautta.
Esimerkiksi:
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()
Korvaa WLAN luokalla WINC (vanhempi WiFi-laajennus) tai LAN (sisäänrakennettu Ethernet) kameralle sopivasti. Korkean tason kaava rakenna -> aktivoi -> yhdistä -> käytä socketteja on sama kaikissa kolmessa tapauksessa.
Yhteinen verkkosovittimen rajapinta¶
Tässä osiossa kuvataan (epäsuora) abstrakti perusluokka kaikille verkkorajapintaluokille, jotka MicroPython-portit toteuttavat eri laitteistoille. Tämä tarkoittaa, että MicroPython ei varsinaisesti tarjoa AbstractNIC-luokkaa, mutta jokainen varsinainen NIC-luokka, kuten seuraavissa osioissa kuvataan, toteuttaa tässä kuvatut metodit.
- class network.AbstractNIC(id: int | None = None, *args: Any, **kwargs: Any) None¶
Luo verkkorajapintaobjekti. Parametrit ovat verkkorajapintakohtaisia. Jos samaa tyyppiä on useampi kuin yksi rajapinta, ensimmäisen parametrin tulisi olla
id.- active(is_active: bool | None = None, /) bool¶
Käynnistä verkkorajapinta tai sammuta se.
Ilman argumenttia palauttaa nykyisen tilan –
Truekun rajapinta on aktiivinen, muutoinFalse.Anna
Trueaktivoidaksesi rajapinnan: kytke virta päälle / nollaa taustalla oleva verkko-ohjain, lataa laiteohjelmisto tarvittaessa ja käynnistä IP-pino tässä rajapinnassa. Myöhemmät kutsut, jotka kommunikoivat verkon kanssa (connect(),scan(),ipconfig(), …), edellyttävät, että rajapinta on aktiivinen.Anna
Falsedeaktivoidaksesi rajapinnan: pura IP-pino ja vapauta ohjaimen resurssit. Langattomissa rajapinnoissa tämä myös purkaa yhteyden mihin tahansa tällä hetkellä liitettyyn verkkoon.Muiden metodien kutsumisen käyttäytyminen ei-aktiivisessa rajapinnassa on määrittelemätön.
- connect(service_id: str | None = None, key: str | None = None, *, bssid: bytes | None = None, **kwargs: Any) None¶
Yhdistä rajapinta verkkoon. Tämä metodi on valinnainen ja saatavilla vain rajapinnoille, jotka eivät ole ”aina yhdistettyjä”. Jos parametreja ei anneta, yhdistä oletuspalveluun (tai ainoaan palveluun). Jos annetaan yksi parametri, se on yhdistettävän palvelun ensisijainen tunniste. Sen mukana voi olla avain (salasana), joka vaaditaan kyseisen palvelun käyttämiseen. Lisäksi voi olla muita mielivaltaisia vain-avainsana-parametreja riippuen verkon mediatyypistä ja/tai tietystä laitteesta. Parametreja voidaan käyttää: a) vaihtoehtoisten palvelutunnistetyyppien määrittämiseen; b) lisäyhteysparametrien tarjoamiseen. Eri mediatyypeille on erilaisia ennalta määriteltyjen/suositeltujen parametrien joukkoja, niiden joukossa:
WiFi: bssid-avainsana yhdistämään tiettyyn BSSID:hen (MAC-osoite)
- scan(**kwargs: Any) List[Tuple]¶
Etsi saatavilla olevia verkkopalveluja/-yhteyksiä. Palauttaa listan monikoita löydettyjen palvelujen parametreilla. Eri verkkomedioille on erilaisia variantteja ennalta määritellyistä/suositelluista monikkomuodoista, niiden joukossa:
WiFi: (ssid, bssid, channel, RSSI, security, hidden). Lisäksi voi olla muita kenttiä, jotka ovat tietylle laitteelle ominaisia.
Funktio voi hyväksyä lisäavainsana-argumentteja skannaustulosten suodattamiseen (esim. tietyn palvelun, tietyn kanavan tai tietyn joukon palvelujen skannaamiseen jne.) sekä skannauksen keston ja muiden parametrien vaikuttamiseen. Mahdollisuuksien mukaan parametrien nimien tulisi vastata connect():n parametreja.
- status(param: str | None = None) Any¶
Kysele rajapinnan dynaamista tilatietoa. Kun kutsutaan ilman argumenttia, palautusarvo kuvaa verkkolinkin tilaa. Muutoin param tulisi olla merkkijono, joka nimeää tietyn haettavan tilaparametrin.
Palautustyypit ja -arvot riippuvat verkkomediasta/-teknologiasta. Joitakin tuettuja parametreja voivat olla:
WiFi STA: käytä
'rssi'hakeaksesi tukiaseman signaalin RSSI:nWiFi AP: käytä
'stations'hakeaksesi listan kaikista tukiasemaan yhdistetyistä STA:ista. Lista sisältää monikoita muotoa (MAC, RSSI).
- ipconfig(param: str) Any¶
- ipconfig(**kwargs: Any) None
Hae tai aseta rajapintakohtaiset IP-määritysrajapinnan parametrit. Tuetut parametrit ovat seuraavat (tietyn parametrin saatavuus riippuu portista ja tietystä verkkorajapinnasta):
dhcp4(True/False) hanki IPv4-osoite, yhdyskäytävä ja DNS-palvelin DHCP:n kautta. Tämä metodi ei estä eikä odota osoitteen saamista. Tarkistaaksesi, saatiinko osoite, käytä vain luettavaa ominaisuuttahas_dhcp4.gw4Hae/aseta IPv4-oletusyhdyskäytävä.dhcp6(True/False) hanki DNS-palvelin tilattoman DHCPv6:n kautta. IP-osoitteiden hankkimista DHCPv6:n kautta ei ole tällä hetkellä toteutettu.autoconf6(True/False) hanki tilaton IPv6-osoite reititinilmoituksissa jaetun verkkoetuliitteen kautta. Tarkistaaksesi, saatiinko tilaton osoite, käytä vain luettavaa ominaisuuttahas_autoconf6.addr4(esim.192.168.0.4/24) hae nykyinen IPv4-osoite ja verkkomaski(ip, subnet)-monikkona riippumatta siitä, miten tämä osoite saatiin. Tätä metodia voidaan käyttää staattisen IPv4-osoitteen asettamiseen joko(ip, subnet)-monikkona tai CIDR-merkinnällä.addr6(esim.fe80::1234:5678) hae lista nykyisistä IPv6-osoitteista(ip, state, preferred_lifetime, valid_lifetime)-monikkona. Tämä sisältää link-local-, slaac- ja staattiset osoitteet.preferred_lifetimejavalid_lifetimeedustavat kunkin IPv6-osoitteen jäljellä olevaa voimassa- ja ensisijaisuusaikaa sekunteina.stateilmaisee osoitteen nykyisen tilan:0x08-0x0filmaisee, että osoite on alustava, laskien lähetettyjen koetinten määrää.0x10Osoite on vanhentunut (mutta edelleen voimassa)0x30Osoite on ensisijainen (ja voimassa)0x40Osoite on kaksinkertainen eikä sitä voi käyttää.
Tätä metodia voidaan käyttää staattisen IPv6-osoitteen asettamiseen asettamalla tämä parametri osoitteeksi, kuten
fe80::1234:5678.
- ifconfig(config: Tuple[str, str, str, str] | None = None) Tuple[str, str, str, str] | None¶
Muista
Tämä funktio on vanhentunut, käytä sen sijaan
ipconfig().Hae/aseta IP-tason verkkorajapinnan parametrit: IP-osoite, aliverkon peite, yhdyskäytävä ja DNS-palvelin. Kun kutsutaan ilman argumentteja, tämä metodi palauttaa 4-monikon yllä mainituilla tiedoilla. Asettaaksesi yllä olevat arvot, anna 4-monikko, jossa on vaaditut tiedot. Esimerkiksi:
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
Hae tai aseta yleiset verkkorajapinnan parametrit. Nämä metodit mahdollistavat työskentelyn standardin IP-määrityksen lisäparametrien kanssa (joista
ipconfig()huolehtii). Näihin kuuluvat verkkokohtaiset ja laitteistokohtaiset parametrit. Parametrien asettamiseen tulisi käyttää avainsana-argumenttisyntaksia, ja useita parametreja voidaan asettaa kerralla. Kyselyssä parametrin nimi tulisi lainata merkkijonona, ja vain yhtä parametria voidaan kysyä kerrallaan:# 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'))
Tietyt verkkoluokkien toteutukset¶
Seuraavat konkreettiset luokat toteuttavat AbstractNIC-rajapinnan ja tarjoavat tavan ohjata erityyppisiä verkkorajapintoja.
Verkkofunktiot¶
Seuraavat ovat network-moduulissa saatavilla olevia funktioita.
- network.country(code: str | None = None) str | None¶
Hae tai aseta kaksikirjaiminen ISO 3166-1 Alpha-2 -maakoodi, jota käytetään radiomääräysten noudattamiseen.
Jos code-parametri annetaan, maa asetetaan tähän arvoon. Jos funktio kutsutaan ilman parametreja, se palauttaa nykyisen maan.
Oletuskoodi
"XX"edustaa ”maailmanlaajuista” aluetta.
- network.hostname(name: str | None = None) str | None¶
Hae tai aseta isäntänimi, joka tunnistaa tämän laitteen verkossa. Sitä käyttävät kaikki rajapinnat.
- Tätä isäntänimeä käytetään seuraaviin:
Lähettäminen DHCP-palvelimelle asiakaspyynnössä. (Jos käytetään DHCP:tä)
Lähettäminen mDNS:n kautta. (Jos käytössä)
Jos name-parametri annetaan, isäntänimi asetetaan tähän arvoon. Jos funktio kutsutaan ilman parametreja, se palauttaa nykyisen isäntänimen.
Isäntänimen muutos otetaan tyypillisesti käyttöön vain yhteyden muodostamisen aikana. DHCP:n osalta tämä johtuu siitä, että isäntänimi on osa DHCP-asiakaspyyntöä, ja useimpien porttien mDNS-toteutus alustaa isäntänimen vain kerran yhteyden muodostamisen aikana. Tämän vuoksi isäntänimi on asetettava ennen verkkorajapintojen aktivointia/yhdistämistä.
Isäntänimen pituus on rajoitettu 32 merkkiin. MicroPython-portit voivat valita asettaa alemman rajan muistisyistä. Jos annettu nimi ei mahdu, nostetaan
ValueError.Oletusisäntänimi on tyypillisesti kortin nimi.
- network.ipconfig(param: str) Any¶
- network.ipconfig(**kwargs: Any) None
Hae tai aseta globaalit IP-määritysparametrit. Tuetut parametrit ovat seuraavat (tietyn parametrin saatavuus riippuu portista ja tietystä verkkorajapinnasta):
dnsHae/aseta DNS-palvelin. Tämä metodi voi tukea sekä IPv4- että IPv6-osoitteita.prefer(4/6) Määritä, mikä osoitetyyppi palautetaan, jos verkkotunnuksella on sekä A- että AAAA-tietueet. Huomaa, että tämä ei tyhjennä paikallista DNS-välimuistia, joten aiemmin saadut osoitteet eivät välttämättä muutu.