2018-09-26 08:07:38 +01:00
.. currentmodule :: network
.. _network.WLAN:
class WLAN -- control built-in WiFi interfaces
==============================================
This class provides a driver for WiFi network processors. Example usage::
import network
# enable station interface and connect to WiFi access point
nic = network.WLAN(network.STA_IF)
nic.active(True)
2022-06-04 11:32:08 +01:00
nic.connect('your-ssid', 'your-key')
2018-09-26 08:07:38 +01:00
# now use sockets as usual
Constructors
------------
.. class :: WLAN(interface_id)
Create a WLAN network interface object. Supported interfaces are
`` network.STA_IF `` (station aka client, connects to upstream WiFi access
points) and `` network.AP_IF `` (access point, allows other WiFi clients to
connect). Availability of the methods below depends on interface type.
For example, only STA interface may `WLAN.connect()` to an access point.
Methods
-------
.. method :: WLAN.active([is_active])
Activate ("up") or deactivate ("down") network interface, if boolean
argument is passed. Otherwise, query current state if no argument is
provided. Most other methods require active interface.
2022-06-04 11:32:08 +01:00
.. method :: WLAN.connect(ssid=None, key=None, *, bssid=None)
2018-09-26 08:07:38 +01:00
2022-06-04 11:32:08 +01:00
Connect to the specified wireless network, using the specified key.
2018-09-26 08:07:38 +01:00
If *bssid* is given then the connection will be restricted to the
access-point with that MAC address (the *ssid* must also be specified
in this case).
.. method :: WLAN.disconnect()
Disconnect from the currently connected wireless network.
.. method :: WLAN.scan()
Scan for the available wireless networks.
2021-08-03 13:46:24 +01:00
Hidden networks -- where the SSID is not broadcast -- will also be scanned
if the WLAN interface allows it.
2018-09-26 08:07:38 +01:00
Scanning is only possible on STA interface. Returns list of tuples with
the information about WiFi access points:
2022-06-04 11:32:08 +01:00
(ssid, bssid, channel, RSSI, security, hidden)
2018-09-26 08:07:38 +01:00
*bssid* is hardware address of an access point, in binary form, returned as
2021-08-12 04:59:29 +01:00
bytes object. You can use `binascii.hexlify()` to convert it to ASCII form.
2018-09-26 08:07:38 +01:00
2022-06-04 11:32:08 +01:00
There are five values for security:
2018-09-26 08:07:38 +01:00
* 0 -- open
* 1 -- WEP
* 2 -- WPA-PSK
* 3 -- WPA2-PSK
* 4 -- WPA/WPA2-PSK
and two for hidden:
* 0 -- visible
* 1 -- hidden
.. method :: WLAN.status([param])
Return the current status of the wireless connection.
When called with no argument the return value describes the network link status.
The possible statuses are defined as constants:
* `` STAT_IDLE `` -- no connection and no activity,
* `` STAT_CONNECTING `` -- connecting in progress,
* `` STAT_WRONG_PASSWORD `` -- failed due to incorrect password,
* `` STAT_NO_AP_FOUND `` -- failed because no access point replied,
* `` STAT_CONNECT_FAIL `` -- failed due to other problems,
* `` STAT_GOT_IP `` -- connection successful.
When called with one argument *param* should be a string naming the status
parameter to retrieve. Supported parameters in WiFI STA mode are: `` 'rssi' `` .
.. method :: WLAN.isconnected()
In case of STA mode, returns `` True `` if connected to a WiFi access
point and has a valid IP address. In AP mode returns `` True `` when a
station is connected. Returns `` False `` otherwise.
.. method :: WLAN.ifconfig([(ip, subnet, gateway, dns)])
Get/set IP-level network interface parameters: IP address, subnet mask,
gateway and DNS server. When called with no arguments, this method returns
a 4-tuple with the above information. To set the above values, pass a
4-tuple with the required information. For example::
nic.ifconfig(('192.168.0.4', '255.255.255.0', '192.168.0.1', '8.8.8.8'))
.. method :: WLAN.config('param')
2020-06-04 02:38:45 +01:00
WLAN.config(param=value, ...)
2018-09-26 08:07:38 +01:00
Get or set general network interface parameters. These methods allow to work
with additional parameters beyond standard IP configuration (as dealt with by
`WLAN.ifconfig()` ). These include network-specific and hardware-specific
parameters. For setting parameters, keyword argument syntax should be used,
multiple parameters can be set at once. For querying, parameters name should
be quoted as a string, and only one parameter can be queries at time::
2022-06-04 11:32:08 +01:00
# Set WiFi access point name (formally known as SSID) and WiFi channel
ap.config(ssid='My AP', channel=11)
2018-09-26 08:07:38 +01:00
# Query params one by one
2022-06-04 11:32:08 +01:00
print(ap.config('ssid'))
2018-09-26 08:07:38 +01:00
print(ap.config('channel'))
Following are commonly supported parameters (availability of a specific parameter
2020-06-04 02:38:45 +01:00
depends on network technology type, driver, and :term: `MicroPython port` ).
2018-09-26 08:07:38 +01:00
============= ===========
Parameter Description
============= ===========
mac MAC address (bytes)
2022-06-04 11:32:08 +01:00
ssid WiFi access point name (string)
2018-09-26 08:07:38 +01:00
channel WiFi channel (integer)
2022-06-04 11:32:08 +01:00
hidden Whether SSID is hidden (boolean)
security Security protocol supported (enumeration, see module constants)
key Access key (string)
2023-02-01 03:25:12 +00:00
hostname The hostname that will be sent to DHCP (STA interfaces) and mDNS (if supported, both STA and AP). (Deprecated, use :func: `network.hostname` instead)
2021-06-13 15:23:53 +01:00
reconnects Number of reconnect attempts to make (integer, 0=none, -1=unlimited)
2022-04-22 12:50:20 +01:00
txpower Maximum transmit power in dBm (integer or float)
2022-08-25 07:55:57 +01:00
pm WiFi Power Management setting (see below for allowed values)
2018-09-26 08:07:38 +01:00
============= ===========
2022-08-25 07:55:57 +01:00
Constants
---------
.. data :: WLAN.PM_PERFORMANCE
WLAN.PM_POWERSAVE
WLAN.PM_NONE
Allowed values for the `` WLAN.config(pm=...) `` network interface parameter:
* `` PM_PERFORMANCE `` : enable WiFi power management to balance power
savings and WiFi performance
* `` PM_POWERSAVE `` : enable WiFi power management with additional power
savings and reduced WiFi performance
* `` PM_NONE `` : disable wifi power management