network — 网络配置

该模块提供网络驱动程序和路由配置。要使用此模块,必须安装具有网络功能的 MicroPython 变体/构建。该模块中提供了特定硬件的网络驱动程序,用于配置硬件网络接口。由配置的接口提供的网络服务随后可通过该 usocket 模块使用。

例如:

# connect/ show IP config a specific network interface
# see below for examples of specific drivers
import network
import utime
nic = network.Driver(...)
if not nic.isconnected():
    nic.connect()
    print("Waiting for connection...")
    while not nic.isconnected():
        utime.sleep(1)
print(nic.ifconfig())

# now use usocket as usual
import usocket as socket
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()

通用网络适配器接口

本节描述了由MicroPython 端口 为不同硬件实现的所有网络接口类的(隐含的)抽象基类。这意味着 MicroPython 实际上并不提供AbstractNIC 类,但任何实际的 NIC 类(如以下部分所述)都实现了此处所述的方法。

class network.AbstractNIC(id=None, ...)

实例化网络接口对象。参数取决于网络接口。如果有多个相同类型的接口,第一个参数应该是 id.

AbstractNIC.active([is_active])

如果传递布尔参数,则激活(“向上”)或停用(“向下”)网络接口。否则,如果没有提供参数,则查询当前状态。大多数其他方法需要一个活动接口(未定义在非活动接口上调用它们的行为)。

AbstractNIC.connect([service_id, key=None, *, ...])

将接口连接到网络。此方法是可选的,仅适用于非“始终连接”的接口。如果没有给出参数,则连接到默认(或唯一)服务。如果给出单个参数,则它是要连接到的服务的主要标识符。它可能附有访问所述服务所需的密钥(密码)。根据网络介质类型和/或特定设备,可以有进一步的任意关键字参数。参数可用于: a) 指定替代服务标识符类型;b) 提供额外的连接参数。对于各种介质类型,有不同的预定义/推荐参数集,其中:

  • WiFi:bssid关键字连接到特定的 BSSID(MAC 地址)

AbstractNIC.disconnect()

断开网络连接。

AbstractNIC.isconnected()

返回 True如果连接到网络,否则返回False

AbstractNIC.scan(*, ...)

扫描可用的网络服务/连接。返回具有发现的服务参数的元组列表。对于各种网络媒体,预定义/推荐的元组格式有不同的变体,其中包括:

  • WiFi:(ssid、bssid、信道、RSSI、authmode、隐藏)。可能存在特定于特定设备的更多字段。

该函数可以接受额外的关键字参数来过滤扫描结果(例如扫描特定服务、特定频道、特定集合的服务等),并影响扫描持续时间和其他参数。在可能的情况下,参数名称应与 connect() 中的名称匹配。

AbstractNIC.status([param])

查询接口的动态状态信息。当不带参数调用时,返回值描述网络链接状态。否则 param应该是一个字符串,命名要检索的特定状态参数。

返回类型和值取决于网络介质/技术。可能支持的一些参数是:

  • WiFi STA:用于'rssi'检索AP信号的RSSI

  • WiFi AP:用于 'stations' 检索连接到该 AP 的所有 STA 的列表。该列表包含形式为 (MAC, RSSI) 的元组。

AbstractNIC.ifconfig([(ip, subnet, gateway, dns)])

获取/设置 IP 级网络接口参数:IP 地址、子网掩码、网关和 DNS 服务器。当不带参数调用时,此方法返回一个包含上述信息的 4 元组。要设置上述值,请传递带有所需信息的 4 元组。例如:

nic.ifconfig(('192.168.0.4', '255.255.255.0', '192.168.0.1', '8.8.8.8'))
AbstractNIC.config('param')
AbstractNIC.config(param=value, ...)

获取或设置一般网络接口参数。这些方法允许使用超出标准 IP 配置的附加参数(如 处理 ifconfig())。这些包括特定于网络和特定于硬件的参数。设置参数时,应使用关键字参数语法,可以一次设置多个参数。查询时,参数名应以字符串形式引用,一次只能查询一个参数:

# Set WiFi access point name (formally known as ESSID) and WiFi channel
ap.config(essid='My AP', channel=11)
# Query params one by one
print(ap.config('essid'))
print(ap.config('channel'))

具体网络类实现

以下具体类实现 AbstractNIC 接口并提供一种控制各种网络接口的方法。

网络功能

以下是网络模块中可用的功能。

network.phy_mode([mode])

获取或设置 PHY 模式。

如果提供了mode参数,则将 mode 设置为其值。如果不带参数调用该函数,则返回当前模式。

可能的模式定义为常量:
  • MODE_11B – IEEE 802.11b,

  • MODE_11G – IEEE 802.11g,

  • MODE_11N – IEEE 802.11n.

可用性:ESP8266。