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) の形式のタプルが含まれています。
- WiFi STA: AP 信号の 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 インターフェースを実装し、さまざまな種類のネットワークインターフェースを制御する方法を提供します。