4. ネットワークの基礎¶
network モジュールは、WiFi 接続を設定するために使用されます。ステーション用(ESP8266がルータに接続する場合)とアクセスポイント用(ESP8266に接続する他のデバイス用)の2つの WiFi インタフェースがあります。これらのオブジェクトのインスタンスを作成するには次のようにします:
>>> import network
>>> sta_if = network.WLAN(network.STA_IF)
>>> ap_if = network.WLAN(network.AP_IF)
インターフェイスがアクティブかどうかは、次の方法で確認できます:
>>> sta_if.active()
False
>>> ap_if.active()
True
また、次の方法でインタフェースのネットワーク設定を確認することもできます:
>>> ap_if.ipconfig('addr4')
('192.168.4.1', '255.255.255.0')
戻り値は、IPアドレスとネットマスクです。
4.1. WiFi の設定¶
新規インストール時、ESP8266 はアクセスポイントモードで構成されているため、AP_IF インターフェイスがアクティブで、STA_IF インターフェイスはアクティブではありません。STA_IF インターフェイスを使って、自分のネットワークに接続するようにモジュールを設定できます。
First activate the station interface:
>>> sta_if.active(True)
最初にステーションインターフェイスを有効にします:
>>> sta_if.connect('<your SSID>', '<your key>')
次に、WiFiネットワークに接続します:
>>> sta_if.isconnected()
接続が確立されているかどうかを確認するには次のようにします:
>>> sta_if.ipconfig('addr4')
('192.168.0.2', '255.255.255.0')
アクセスポイントインターフェイスが不要になったら、アクセスポイントインターフェイスを無効にすることができます:
>>> ap_if.active(False)
以下は WiFi ネットワークに自動的に接続するために実行する関数です(boot.py ファイルに入れておくこともできます):
def do_connect():
import network
sta_if = network.WLAN(network.STA_IF)
if not sta_if.isconnected():
print('connecting to network...')
sta_if.active(True)
sta_if.connect('<ssid>', '<key>')
while not sta_if.isconnected():
pass
print('network config:', sta_if.ipconfig('addr4'))
4.2. ソケット¶
WiFi が設定されると、ネットワークにアクセスする方法はソケットを使用することです。ソケットはネットワークデバイス上のエンドポイントを表し、2つのソケットが一緒に接続されている場合、通信を続行できます。インターネットプロトコルは、電子メール(SMTP)、Web (HTTP)、telnet、ssh など、ソケットの上に構築されています。これらのプロトコルのそれぞれには特定のポートが割り当てられます。これは単なる整数です。IP アドレスとポート番号を指定すると、リモートデバイスに接続して通話を開始できます。
チュートリアルの次の章では、ソケットを使用して一般的で有用なネットワークタスクを実行する方法について説明します。