network --- ネットワーク設定

このモジュールはネットワークドライバーとルーティングの設定を提供します。このモジュールを使うには、ネットワーク機能を備えるようビルドした MicroPython をインストールする必要があります。特定のハードウェア用のネットワークドライバーは、このモジュール内で利用可能であり、ハードウェアネットワークインタフェースを設定するために使われます。設定したインタフェースによって提供されたネットワークサービスは socket モジュールを介して利用可能になります。

たとえば次のように使います:

# 特定のネットワークインタフェースの接続と IP 設定の表示
# 特定のドライバーの例は以降を参照
import network
import time
nic = network.Driver(...)
if not nic.isconnected():
    nic.connect()
    print("Waiting for connection...")
    while not nic.isconnected():
        time.sleep(1)
print(nic.ifconfig())

# これで通常どおり socket を使えるようになる
import 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])

ブール型の引数が渡された場合、ネットワークインタフェースを有効化("up")または無効化("down")します。引数が与えられていなければ現在の状態を問い合わせます。他のほとんどのメソッドは有効化したインターフェースを必要とします(無効化したインターフェースでそれらを呼び出す動作は未定義です)。

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

インターフェイスをネットワークに接続します。このメソッドはオプションであり、「常に接続されている」とは限らないインタフェースに対してのみ利用可能です。パラメータが指定されていない場合は、デフォルトの(または唯一の)サービスに接続します。単一のパラメータが与えられた場合、それは接続するサービスのプライマリ識別子です。これはサービスにアクセスするために必要な鍵(パスワード)を伴うことがあります。ネットワーク媒体の種類や特定の装置に応じて、さらに任意のキーワードのみのパラメータがあり得ます。パラメータは、次の目的で使用できます: a) 代替サービス識別タイプを指定; b) 追加の接続パラメータを提供。さまざまな媒体タイプのそれぞれに、定義済み/推奨パラメータのセットがあります:

  • WiFi: bssid - 特定の BSSID (MAC アドレス)に接続するためのキーワード
AbstractNIC.disconnect()

ネットワークから切断します。

AbstractNIC.isconnected()

ネットワークに接続されていれば True を返し、そうでなければ False を返します。

AbstractNIC.scan(*, ...)

利用可能なネットワークサービス/接続をスキャンします。戻り値は、検出されたサービスパラメータを持つタプルのリストです。さまざまなネットワーク媒体に対して、定義済み/推奨のタプル形式にはさまざまな種類があります:

  • WiFi: (ssid, bssid, channel, RSSI, security, hidden)。特定のデバイスに固有のさらなる項目もあり得ます。

この関数は、追加のキーワード引数を受け取ることができ、スキャン結果をフィルタリングしたり(たとえば、特定のサービスのスキャン、特定のチャンネルのスキャン、特定のセットのサービスのスキャンなど)、スキャン期間やその他のパラメータに影響を与えたりできます。可能であれば、パラメータ名は connect() のものと一致させるべきです。

AbstractNIC.status([param])

インターフェースの動的な状況情報を照会します。引数なしで呼び出された場合、戻り値はネットワークリンクステータスを表します。そうでなければ param は取得する特定のステータスパラメータを命名する文字列であるべきです。

戻り値の型と値は、ネットワークの媒体/テクノロジによって異なります。サポートされている可能性のあるパラメータは次のとおりです。

  • WiFi STA: AP 信号の RSSI を取得するには 'rssi' 使います
  • WiFi AP: AP に接続されているすべてのSTAのリストを取得するには 'stations' を使います。このリストには (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, ...)

一般的なネットワークインターフェースパラメータを取得または設定します。これらのメソッドは、(ifconfig() で扱われるように)標準の IP 設定以外の追加のパラメータを扱うことを可能にします 。これらには、ネットワーク固有およびハードウェア固有のパラメータが含まれています。パラメータを設定するには、キーワード引数の構文を使用する必要があり、複数のパラメータを一度に設定できます。問合せを実行する場合、パラメータ名は文字列として引用符で囲みます。一度に問合せできるパラメータは1つだけです。

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

特定のネットワーククラスの処理系

以下の具象クラスは AbstractNIC インターフェースを実装し、さまざまな種類のネットワークインターフェースを制御する方法を提供します。

ネットワーク関数

以下はネットワークモジュールで利用可能な関数です。

network.phy_mode([mode])

PHY モードを取得または設定します。

mode パラメータを与えた場合、その値にモードを設定します。関数がパラメータなしで呼び出された場合は、現在のモードを返します。

指定可能なモードは定数として定義されています:
  • MODE_11B -- IEEE 802.11b,
  • MODE_11G -- IEEE 802.11g,
  • MODE_11N -- IEEE 802.11n.

可用性: ESP8266。