このドキュメンテーションは、MicroPython の最新開発ブランチのためのものです。 リリースバージョンでは利用できない機能に言及することがあります。

特定のリリースのドキュメントをお探しの場合は、左側のドロップダウンメニューを使って、 望みのバージョンを選択します。

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.country([code])

無線規格で使われる2文字の ISO 3166-1 Alpha-2 国コードを取得または設定します。

code パラメータを指定した場合、その値に国を設定します。パラメータを指定せずに関数を呼び出した場合、現在の国が返されます。

デフォルトのコード "XX" は、 "XX" リージョンを表します。

network.hostname([name])

ネットワーク上でこのデバイスを識別するために使うホスト名を取得または設定します。これはすべてのインターフェイスで使われます。

このホスト名は以下の用途で使われます。
  • DHCPサーバーへのクライアント要求(DHCP を使っている場合)

  • mDNS経由でのブロードキャスト(有効な場合)

name パラメータを指定した場合、その値にホスト名を設定されます。パラメータを指定せずに関数を呼び出した場合、現在のホスト名が返されます。

ホスト名の変更は通常、接続中にのみ適用されます。DHCP の場合、ホスト名は DHCP クライアントリクエストの一部であり、ほとんどのポートでの mDNS の実装は接続中に一度だけホスト名を初期化します。そのため、ネットワークインターフェイスをアクティブ化/接続する前にホスト名を設定する必要があります。

ホスト名の長さは32文字までです。 "MicroPython のポート によっては、メモリの都合でそれ以下の長さになっていることもあります。指定した名前に収まらない場合は ValueError が発生します。

デフォルトのホスト名は通常、ボードの名前になります。

network.phy_mode([mode])

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

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

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

  • MODE_11G -- IEEE 802.11g,

  • MODE_11N -- IEEE 802.11n.

可用性: ESP8266。