33. Lektion: Wlan

Aus Attraktor Wiki

Wechseln zu: Navigation, Suche

Der Pico W hat ein Wlan Modul an Board. Nun wollen wir sehen wie man sich mit dem Pico W beim Wlan anmeldet.
Wie immer bei Micropython müssen wir zuerst eine Instanz erstellen. In diesem Fall von der Klasse network.WLAN:

import network

wlan = network.WLAN(network.STA_IF)

Wir können unseren Pico W als als Station (network.STA_IF) anmelden oder ein neues Wlan aufmachen. Dazu müssen wir den Pico W als Accesspoint (network.AP_IF) initialisieren.
Nun muss die Wlan Instanz aktiviert werden.

wlan.active(True)

Nun haben wir eine Wlaninstanz erzeugt. Mit der Methode .scan() können wir jetzt nach erreichbaren Wlans scannen:

wlans = wlan.scan()
for wl in wlans:
    print(wl)

Schließlich können wir unseren Pico W bei unserem Accesspoint (Router) anmelden.

wlan.connect('ssid', 'key')

Um die Zugangsdaten zum Wlan nicht mit dem Programm öffentlich zu machen, kann man diese in eine eigene Datei schreiben:

# geheim.py

SSID = 'Attraktor'
PW = 'blafablafa'

Dieses kleine Programm kann dann in das Wlan Programm importiert werden.

from geheim import SSID, PW

Im Prinzip können wir die Anmeldung mit diesen drei Schritten durchführen.
In der Praxis funktioniert die Anmeldung aber nicht immer schnell und problemlos. Deshalb ist noch ein wenig Code nötig, der prüft, ob eine Verbindung zustande gekommen ist und ggf. noch darauf wartet, bevor das Programm weiter ausgeführt wird.

Das folgende Programm gibt zum einen Meldungen aus, so dass der User darüber informiert wird was gerade passiert.
Zum Anderen prüft es, ob die Verbindung schon zustande gekommen ist. Wenn nicht wird weiter gewartet, wenn wird die Warteschleife abgebrochen und das Programm fortgesetzt. Dem User werden dann noch Informationen zum Wlan angezeigt.
Wenn man eine Wlanverbindung aufbauen will sollte man immer diesen kleinen Codeschnipsel einsetzen,
Eine Verbesserung ist daran noch möglich: Ein Timeout einbauen und das Programm abbrechen, wenn die Verbindung nicht zustande kommt.

import network
from geheim import SSID, PW

# Wlan Verbindung herstellen

wlan = network.WLAN(network.STA_IF)
wlan.active(True)
if not wlan.isconnected():
    print('connecting to network...')
    wlan.connect(SSID, PW)
    while not wlan.isconnected():
        pass
print('network config:', wlan.ifconfig())

Die Meldung nach dem erfolgreichen konnekten sieht so aus:

network config: ('192.168.2.86', '255.255.252.0', '192.168.0.1', '192.168.0.1')

Die 4 Angaben enthalten die IP-Adresse des Gerätes, die Subnetmaske, die IP des Gateway(Router) und die IP des DNS.


Nun ist unser Pico W mit dem Wlan verbunden. Nun brauchen wir noch Programme, die das Wlan und das Internet nutzen.

Automatisch mit bekanntem Wlan verbinden

Wenn man häufiger in unterschiedliche Wlans einloggen muss, ist es sehr hilfreich, wenn das Programm ein bekanntes Wlan selbst erkennt und sich dann automatisch einlogged.

# wlantools.py
# 
# Anwendung:
# from wlantools import *
# oder:
# from wlantools import wlan
# 

import network

SSID = ''
PW = ''

wlans_known = {'WLAN-B4ZFT5': 'geheim_2', 
               'Kapest-Fritz': 'geheim_0',
               'Attraktor': 'geheim_1'
               }

wlan = network.WLAN(network.STA_IF)
wlan.active(True)

wlans = wlan.scan()

for wlan_found in wlans:
    for wlan_known in wlans_known.keys():
#         print(wlan_found, wlan_known)
        if str(wlan_found[0], 'utf-8') == wlan_known:
            ssid_found = wlans_known[wlan_known]
            exec(f'from {ssid_found} import SSID, PW')
        if SSID:
            break
    if SSID:
        break

if SSID:
    print(f'Wlan {SSID} gefunden')
    if not wlan.isconnected():
        print('connecting to network...')
        wlan.connect(SSID, PW)
        while not wlan.isconnected():
            pass
    print('network config:', wlan.ifconfig())
else:
    print('Kein bekanntes Wlan gefunden')

Die dazugehörigen geheim.py Dateien sehen ganz einfach aus:

# geheim_1.py
#
# Wlan beim Attraktor
#

SSID = 'Attraktor'
PW = 'blafablafa'

Wlan als Accesspoint

Habe ich nicht zum Laufen bekommen.

Navigation

Zurück zur "Micropython Kurs 2023 Teil 2" Startseite
Zurück zur "Micropython Kurs 2023" Startseite
Zurück zur Programmieren Startseite
Zurück zur Wiki Startseite

Diese Seite wurde zuletzt am 6. Februar 2024 um 17:03 Uhr geändert. Diese Seite wurde bisher 1.012 mal abgerufen.