network — ağ yapılandırması

Bu modül, ağ sürücüleri ve yönlendirme yapılandırması sağlar. Bu modülü kullanmak için, ağ yetenekleri olan bir MicroPython çeşidi/derlemesi kurulu olmalıdır. Belirli donanımlara yönelik ağ sürücüleri bu modül içinde bulunur ve donanım ağ arayüzlerini yapılandırmak için kullanılır. Yapılandırılmış arayüzlerin sağladığı ağ hizmetleri daha sonra socket modülü aracılığıyla kullanılabilir.

Örneğin:

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

Kameraya uygun şekilde WLAN yerine WINC (eski WiFi shield’ı) veya LAN (yerleşik Ethernet) koyun. Oluştur -> etkinleştir -> bağlan -> soketleri kullan şeklindeki üst seviye düzen, her üç durumda da aynıdır.

Ortak ağ bağdaştırıcısı arayüzü

Bu bölüm, farklı donanımlara yönelik MicroPython ports tarafından uygulanan tüm ağ arayüzü sınıfları için (örtük) soyut bir temel sınıfı açıklar. Bu, MicroPython’ın aslında bir AbstractNIC sınıfı sağlamadığı, ancak aşağıdaki bölümlerde açıklandığı gibi herhangi bir gerçek NIC sınıfının burada açıklanan metotları uyguladığı anlamına gelir.

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

Bir ağ arayüzü nesnesi örnekler. Parametreler ağ arayüzüne bağlıdır. Aynı türden birden fazla arayüz varsa, ilk parametre id olmalıdır.

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

Ağ arayüzünü açar veya kapatır.

Argümansız çağrıldığında geçerli durumu döndürür – arayüz etkinken True, aksi halde False.

Arayüzü etkinleştirmek için True geçin: alttaki ağ denetleyicisini güçlendirir / sıfırlar, uygun olduğunda firmware yükler ve bu arayüzde IP yığınını başlatır. Ağ ile konuşan sonraki çağrılar (connect(), scan(), ipconfig(), …) arayüzün etkin olmasını gerektirir.

Arayüzü devre dışı bırakmak için False geçin: IP yığınını kapatır ve sürücü kaynaklarını serbest bırakır. Kablosuz arayüzlerde bu, ayrıca o anda katılınan herhangi bir ağdan ayrılır.

Etkin olmayan bir arayüzde diğer metotları çağırmanın davranışı tanımsızdır.

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

Arayüzü bir ağa bağlar. Bu metot isteğe bağlıdır ve yalnızca “her zaman bağlı” olmayan arayüzler için kullanılabilir. Parametre verilmezse, varsayılan (veya tek) hizmete bağlanır. Tek bir parametre verilirse, bu, bağlanılacak hizmetin birincil tanımlayıcısıdır. Söz konusu hizmete erişmek için gereken bir anahtar (parola) eşlik edebilir. Ağ ortam türüne ve/veya belirli cihaza bağlı olarak, daha başka rastgele yalnızca anahtar sözcük parametreleri olabilir. Parametreler şunlar için kullanılabilir: a) alternatif hizmet tanımlayıcı türlerini belirtmek; b) ek bağlantı parametreleri sağlamak. Çeşitli ortam türleri için, aralarında şunların da bulunduğu farklı önceden tanımlanmış/önerilen parametre kümeleri vardır:

  • WiFi: belirli bir BSSID’ye (MAC adresi) bağlanmak için bssid anahtar sözcüğü

disconnect() None

Ağdan bağlantıyı keser.

isconnected() bool

Ağa bağlıysa True, aksi halde False döndürür.

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

Mevcut ağ hizmetlerini/bağlantılarını tarar. Keşfedilen hizmet parametrelerini içeren demetlerden oluşan bir liste döndürür. Çeşitli ağ ortamları için, aralarında şunların da bulunduğu farklı önceden tanımlanmış/önerilen demet biçimi çeşitleri vardır:

  • WiFi: (ssid, bssid, channel, RSSI, security, hidden). Belirli bir cihaza özgü daha başka alanlar da olabilir.

İşlev, tarama sonuçlarını filtrelemek (ör. belirli bir hizmeti, belirli bir kanalda, belirli bir kümeye ait hizmetleri taramak vb.) ve tarama süresini ve diğer parametreleri etkilemek için ek anahtar sözcük argümanları kabul edebilir. Mümkün olduğunda, parametre adları connect() içindekilerle eşleşmelidir.

status(param: str | None = None) Any

Arayüzün dinamik durum bilgisini sorgular. Argümansız çağrıldığında dönüş değeri ağ bağlantı durumunu tanımlar. Aksi halde param, alınacak belirli durum parametresini adlandıran bir string olmalıdır.

Dönüş türleri ve değerleri ağ ortamına/teknolojisine bağlıdır. Desteklenebilecek parametrelerden bazıları şunlardır:

  • WiFi STA: AP sinyalinin RSSI’sini almak için 'rssi' kullanın

  • WiFi AP: AP’ye bağlı tüm STA’ların bir listesini almak için 'stations' kullanın. Liste (MAC, RSSI) biçiminde demetler içerir.

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

Arayüze özgü IP yapılandırması arayüz parametrelerini alır veya ayarlar. Desteklenen parametreler şunlardır (belirli bir parametrenin kullanılabilirliği port’a ve belirli ağ arayüzüne bağlıdır):

  • dhcp4 (True/False) DHCP aracılığıyla bir IPv4 adresi, ağ geçidi ve dns sunucusu alır. Bu metot bir adres alınmasını engelleyip beklemez. Bir adres alınıp alınmadığını kontrol etmek için salt okunur has_dhcp4 özelliğini kullanın.

  • gw4 IPv4 varsayılan ağ geçidini alır/ayarlar.

  • dhcp6 (True/False) durumsuz DHCPv6 aracılığıyla bir DNS sunucusu alır. DHCPv6 aracılığıyla IP Adresleri alınması şu anda uygulanmamıştır.

  • autoconf6 (True/False) yönlendirici duyurularında paylaşılan ağ öneki aracılığıyla durumsuz bir IPv6 adresi alır. Durumsuz bir adresin alınıp alınmadığını kontrol etmek için salt okunur has_autoconf6 özelliğini kullanın.

  • addr4 (ör. 192.168.0.4/24) bu adresin nasıl alındığından bağımsız olarak geçerli IPv4 adresini ve ağ maskesini (ip, subnet) demeti olarak alır. Bu metot, statik bir IPv4 adresini ya (ip, subnet) demeti olarak ya da CIDR gösteriminde ayarlamak için kullanılabilir.

  • addr6 (ör. fe80::1234:5678) geçerli IPv6 adreslerinin bir listesini (ip, state, preferred_lifetime, valid_lifetime) demeti olarak alır. Bu, link-local, slaac ve statik adresleri içerir. preferred_lifetime ve valid_lifetime, her IPv6 adresinin kalan geçerli ve tercih edilen ömrünü saniye cinsinden temsil eder. state adresin geçerli durumunu gösterir:

    • 0x08 - 0x0f adresin geçici olduğunu, gönderilen prob sayısını sayarak gösterir.

    • 0x10 Adres kullanımdan kaldırılmıştır (ancak hâlâ geçerlidir)

    • 0x30 Adres tercih edilendir (ve geçerlidir)

    • 0x40 Adres çoğaltılmıştır ve kullanılamaz.

    Bu metot, bu parametreyi fe80::1234:5678 gibi adrese ayarlayarak statik bir IPv6 adresi ayarlamak için kullanılabilir.

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

Not

Bu işlev kullanımdan kaldırılmıştır, bunun yerine ipconfig() kullanın.

IP seviyesi ağ arayüzü parametrelerini alır/ayarlar: IP adresi, alt ağ maskesi, ağ geçidi ve DNS sunucusu. Argümansız çağrıldığında, bu metot yukarıdaki bilgileri içeren 4’lü bir demet döndürür. Yukarıdaki değerleri ayarlamak için, gerekli bilgileri içeren 4’lü bir demet geçin. Örneğin:

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

Genel ağ arayüzü parametrelerini alır veya ayarlar. Bu metotlar, standart IP yapılandırmasının (ipconfig() tarafından ele alınan) ötesindeki ek parametrelerle çalışmaya olanak tanır. Bunlar ağa özgü ve donanıma özgü parametreleri içerir. Parametre ayarlamak için anahtar sözcük argümanı söz dizimi kullanılmalıdır ve birden fazla parametre aynı anda ayarlanabilir. Sorgulamak için, bir parametre adı string olarak tırnak içine alınmalı ve aynı anda yalnızca bir parametre sorgulanabilir:

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

Belirli ağ sınıfı uygulamaları

Aşağıdaki somut sınıflar AbstractNIC arayüzünü uygular ve çeşitli türlerdeki ağ arayüzlerini denetlemenin bir yolunu sağlar.

Ağ işlevleri

Aşağıdakiler network modülünde bulunan işlevlerdir.

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

Radyo uyumluluğu için kullanılacak iki harfli ISO 3166-1 Alpha-2 ülke kodunu alır veya ayarlar.

code parametresi sağlanırsa, ülke bu değere ayarlanır. İşlev parametresiz çağrılırsa, geçerli ülkeyi döndürür.

Varsayılan kod "XX" “dünya çapında” bölgesini temsil eder.

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

Bu cihazı ağda tanımlayacak ana bilgisayar adını alır veya ayarlar. Tüm arayüzler tarafından kullanılır.

Bu ana bilgisayar adı şunlar için kullanılır:
  • İstemci isteğinde DHCP sunucusuna gönderme. (DHCP kullanılıyorsa)

  • mDNS aracılığıyla yayınlama. (Etkinleştirilmişse)

name parametresi sağlanırsa, ana bilgisayar adı bu değere ayarlanır. İşlev parametresiz çağrılırsa, geçerli ana bilgisayar adını döndürür.

Ana bilgisayar adındaki bir değişiklik genellikle yalnızca bağlantı sırasında uygulanır. DHCP için bunun nedeni, ana bilgisayar adının DHCP istemci isteğinin bir parçası olması ve çoğu port’taki mDNS uygulamasının ana bilgisayar adını yalnızca bağlantı sırasında bir kez başlatmasıdır. Bu nedenle, ana bilgisayar adını ağ arayüzlerinizi etkinleştirmeden/bağlamadan önce ayarlamalısınız.

Ana bilgisayar adının uzunluğu 32 karakterle sınırlıdır. MicroPython ports, bellek nedenleriyle daha düşük bir sınır belirlemeyi tercih edebilir. Verilen ad sığmazsa, bir ValueError ortaya çıkar.

Varsayılan ana bilgisayar adı genellikle kartın adıdır.

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

Genel IP yapılandırması parametrelerini alır veya ayarlar. Desteklenen parametreler şunlardır (belirli bir parametrenin kullanılabilirliği port’a ve belirli ağ arayüzüne bağlıdır):

  • dns DNS sunucusunu alır/ayarlar. Bu metot hem IPv4 hem de IPv6 adreslerini destekleyebilir.

  • prefer (4/6) Bir alan adının hem A hem de AAAA kayıtları varsa, hangi adres türünün döndürüleceğini belirtir. Bunun yerel DNS önbelleğini temizlemediğini, dolayısıyla önceden alınan adreslerin değişmeyebileceğini unutmayın.