2018-09-26 08:07:38 +01:00
|
|
|
.. currentmodule:: network
|
|
|
|
.. _network.WLANWiPy:
|
|
|
|
|
|
|
|
class WLANWiPy -- WiPy specific WiFi control
|
|
|
|
============================================
|
|
|
|
|
|
|
|
.. note::
|
|
|
|
|
|
|
|
This class is a non-standard WLAN implementation for the WiPy.
|
|
|
|
It is available simply as ``network.WLAN`` on the WiPy but is named in the
|
|
|
|
documentation below as ``network.WLANWiPy`` to distinguish it from the
|
|
|
|
more general :ref:`network.WLAN <network.WLAN>` class.
|
|
|
|
|
|
|
|
This class provides a driver for the WiFi network processor in the WiPy. Example usage::
|
|
|
|
|
|
|
|
import network
|
|
|
|
import time
|
|
|
|
# setup as a station
|
|
|
|
wlan = network.WLAN(mode=WLAN.STA)
|
|
|
|
wlan.connect('your-ssid', auth=(WLAN.WPA2, 'your-key'))
|
|
|
|
while not wlan.isconnected():
|
|
|
|
time.sleep_ms(50)
|
|
|
|
print(wlan.ifconfig())
|
|
|
|
|
|
|
|
# now use socket as usual
|
|
|
|
...
|
|
|
|
|
|
|
|
Constructors
|
|
|
|
------------
|
|
|
|
|
|
|
|
.. class:: WLANWiPy(id=0, ...)
|
|
|
|
|
|
|
|
Create a WLAN object, and optionally configure it. See `init()` for params of configuration.
|
|
|
|
|
|
|
|
.. note::
|
|
|
|
|
|
|
|
The ``WLAN`` constructor is special in the sense that if no arguments besides the id are given,
|
|
|
|
it will return the already existing ``WLAN`` instance without re-configuring it. This is
|
|
|
|
because ``WLAN`` is a system feature of the WiPy. If the already existing instance is not
|
|
|
|
initialized it will do the same as the other constructors an will initialize it with default
|
|
|
|
values.
|
|
|
|
|
|
|
|
Methods
|
|
|
|
-------
|
|
|
|
|
2020-07-11 07:53:26 +01:00
|
|
|
.. method:: WLANWiPy.init(mode, *, ssid, auth, channel, antenna)
|
2018-09-26 08:07:38 +01:00
|
|
|
|
|
|
|
Set or get the WiFi network processor configuration.
|
|
|
|
|
|
|
|
Arguments are:
|
|
|
|
|
|
|
|
- *mode* can be either ``WLAN.STA`` or ``WLAN.AP``.
|
|
|
|
- *ssid* is a string with the ssid name. Only needed when mode is ``WLAN.AP``.
|
|
|
|
- *auth* is a tuple with (sec, key). Security can be ``None``, ``WLAN.WEP``,
|
|
|
|
``WLAN.WPA`` or ``WLAN.WPA2``. The key is a string with the network password.
|
|
|
|
If ``sec`` is ``WLAN.WEP`` the key must be a string representing hexadecimal
|
|
|
|
values (e.g. 'ABC1DE45BF'). Only needed when mode is ``WLAN.AP``.
|
|
|
|
- *channel* a number in the range 1-11. Only needed when mode is ``WLAN.AP``.
|
|
|
|
- *antenna* selects between the internal and the external antenna. Can be either
|
|
|
|
``WLAN.INT_ANT`` or ``WLAN.EXT_ANT``.
|
|
|
|
|
|
|
|
For example, you can do::
|
|
|
|
|
|
|
|
# create and configure as an access point
|
|
|
|
wlan.init(mode=WLAN.AP, ssid='wipy-wlan', auth=(WLAN.WPA2,'www.wipy.io'), channel=7, antenna=WLAN.INT_ANT)
|
|
|
|
|
|
|
|
or::
|
|
|
|
|
|
|
|
# configure as an station
|
|
|
|
wlan.init(mode=WLAN.STA)
|
|
|
|
|
2020-07-11 07:53:26 +01:00
|
|
|
.. method:: WLANWiPy.connect(ssid, *, auth=None, bssid=None, timeout=None)
|
2018-09-26 08:07:38 +01:00
|
|
|
|
|
|
|
Connect to a WiFi access point using the given SSID, and other security
|
|
|
|
parameters.
|
|
|
|
|
|
|
|
- *auth* is a tuple with (sec, key). Security can be ``None``, ``WLAN.WEP``,
|
|
|
|
``WLAN.WPA`` or ``WLAN.WPA2``. The key is a string with the network password.
|
|
|
|
If ``sec`` is ``WLAN.WEP`` the key must be a string representing hexadecimal
|
|
|
|
values (e.g. 'ABC1DE45BF').
|
|
|
|
- *bssid* is the MAC address of the AP to connect to. Useful when there are several
|
|
|
|
APs with the same ssid.
|
|
|
|
- *timeout* is the maximum time in milliseconds to wait for the connection to succeed.
|
|
|
|
|
|
|
|
.. method:: WLANWiPy.scan()
|
|
|
|
|
|
|
|
Performs a network scan and returns a list of named tuples with (ssid, bssid, sec, channel, rssi).
|
|
|
|
Note that channel is always ``None`` since this info is not provided by the WiPy.
|
|
|
|
|
|
|
|
.. method:: WLANWiPy.disconnect()
|
|
|
|
|
|
|
|
Disconnect from the WiFi access point.
|
|
|
|
|
|
|
|
.. method:: WLANWiPy.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, ``False`` otherwise.
|
|
|
|
|
|
|
|
.. method:: WLANWiPy.ifconfig(if_id=0, config=['dhcp' or configtuple])
|
|
|
|
|
|
|
|
With no parameters given returns a 4-tuple of *(ip, subnet_mask, gateway, DNS_server)*.
|
|
|
|
|
|
|
|
if ``'dhcp'`` is passed as a parameter then the DHCP client is enabled and the IP params
|
|
|
|
are negotiated with the AP.
|
|
|
|
|
|
|
|
If the 4-tuple config is given then a static IP is configured. For instance::
|
|
|
|
|
|
|
|
wlan.ifconfig(config=('192.168.0.4', '255.255.255.0', '192.168.0.1', '8.8.8.8'))
|
|
|
|
|
|
|
|
.. method:: WLANWiPy.mode([mode])
|
|
|
|
|
|
|
|
Get or set the WLAN mode.
|
|
|
|
|
|
|
|
.. method:: WLANWiPy.ssid([ssid])
|
|
|
|
|
|
|
|
Get or set the SSID when in AP mode.
|
|
|
|
|
|
|
|
.. method:: WLANWiPy.auth([auth])
|
|
|
|
|
|
|
|
Get or set the authentication type when in AP mode.
|
|
|
|
|
|
|
|
.. method:: WLANWiPy.channel([channel])
|
|
|
|
|
|
|
|
Get or set the channel (only applicable in AP mode).
|
|
|
|
|
|
|
|
.. method:: WLANWiPy.antenna([antenna])
|
|
|
|
|
|
|
|
Get or set the antenna type (external or internal).
|
|
|
|
|
|
|
|
.. method:: WLANWiPy.mac([mac_addr])
|
|
|
|
|
|
|
|
Get or set a 6-byte long bytes object with the MAC address.
|
|
|
|
|
2020-07-11 07:53:26 +01:00
|
|
|
.. method:: WLANWiPy.irq(*, handler, wake)
|
2018-09-26 08:07:38 +01:00
|
|
|
|
|
|
|
Create a callback to be triggered when a WLAN event occurs during ``machine.SLEEP``
|
|
|
|
mode. Events are triggered by socket activity or by WLAN connection/disconnection.
|
|
|
|
|
|
|
|
- *handler* is the function that gets called when the IRQ is triggered.
|
|
|
|
- *wake* must be ``machine.SLEEP``.
|
|
|
|
|
|
|
|
Returns an IRQ object.
|
|
|
|
|
|
|
|
Constants
|
|
|
|
---------
|
|
|
|
|
|
|
|
.. data:: WLANWiPy.STA
|
|
|
|
.. data:: WLANWiPy.AP
|
|
|
|
|
|
|
|
selects the WLAN mode
|
|
|
|
|
|
|
|
.. data:: WLANWiPy.WEP
|
|
|
|
.. data:: WLANWiPy.WPA
|
|
|
|
.. data:: WLANWiPy.WPA2
|
|
|
|
|
|
|
|
selects the network security
|
|
|
|
|
|
|
|
.. data:: WLANWiPy.INT_ANT
|
|
|
|
.. data:: WLANWiPy.EXT_ANT
|
|
|
|
|
|
|
|
selects the antenna type
|