-
Notifications
You must be signed in to change notification settings - Fork 0
Raspberry Pi als Wi Fi Direct Access Point
Auf dem Raspberry Pi wurde für das Projekt das Betriebssystem Raspberry Pi OS installiert. Um den Raspberry Pi als Access Point (AP), einzurichten kann das Kommandozeilenprogramm wpa_cli
verwendet werden. Damit der Raspberry Pi als Wi-Fi Direct Zugriffspunkt dienen kann, müssen zuvor noch einige Pakete installiert werden und einige Konfigurationen vorgenommen werden.
Da das Kommandozeilenprogramm nicht sehr benutzerfreundlich ist und es häufig zu Fehlern kommt, wurde ein Wrapper erstellt, welcher alle diese genannten Funktionen als Python Methoden bereitstellt. Zudem bietet das Programm den Vorteil alle Funktionen direkt aus dem Python Code auszuführen, ohne diese händisch eingeben zu müssen. Dadurch ist es möglich mit nur einem Kommando den Raspberry Pi auf eingehende Verbindungen vorzubereiten.
Die Anwendung bietet die folgenden Funktionen:
- Überprüfen anhand des Gerätenamens, ob ein P2P-Geräte bereits mit dem Raspberry verbunden ist
- Ausgeben aller in der nähe befindlichen Wi-Fi Direct Geräte
- den Raspberry Pi für andere Geräte in der Umgebung sichtbar machen
- eine Verbindung zu einem Wi-Fi Direct Gerät herstellen
- auf eine eingehende Verbindung warten und die Verbindungsanfrage bestätigen
Die genannten Funktionen werden von der Klasse WifiDirectConnector implementiert.
Die Methoden der Klasse können direkt von einer anderen Python-Klasse aufgerufen werden. Zudem implementiert die Klasse ein CLI, womit die Anwendung auch standalone verwendet werden kann, um die P2P Verbindung aufzubauen. Das ist in dem Fall sinnvoll, wenn der Code für den Datenaustausch in einer anderen Programmiersprache als Python geschrieben werden soll.
Nachdem das Smartphone mit dem Access Point vom Raspberry Pi verbunden worden ist, können zwischen den beiden Endgeräten Daten ausgetauscht werden. Dazu wird auf dem Raspberry Pi ein TCP-Server-Socket gestartet und auf dem Smartphone ein TCP-Client-Socket, welches eine Verbindung zum Server-Socket aufbaut.
Wenn für die Konfiguration des Raspberry Pi's das config.sh Konfigurationsskript verwendet wird, so hat der Raspberry Pi die IP-Adresse 192.168.4.1
. Diese IP-Adresse sollte muss für die Initialisierung des Server-Sockets verwendet werden.
Dabei ist es egal welche Programmiersprache verwendet wird, um den Socket zu initalisieren. Somit ist es für eine Vielzahl an Anwendungen möglich die WiFi Direct Schnittstelle zur Kommunikation zu nutzen.
Um das Erstellen einer Python-Anwendung für den Datenaustausch über WiFi Direct zu erleichtern, stellt das Repository die abstrakte Klasse WifiDirectSocket
bereit. Wenn eine Klasse von dieser Klasse abgeleitet wird, müssen nur wenige Event-Methoden implementiert, um die P2P nutzen zu können. Auf diese Weise kann mit nur wenigen Zeilen Code P2P Verbindung in neue oder bestehende Anwendungen integriert werden.
Die Dokumentation zu dieser abstrakten Klassen ist als Github Page innerhalb dieses Repositories gehostet.
Bei der Klasse SimpleMessenger
handelt es sich um ein Beispiel, welche zeigt wie die abstrakte Klasse WifiDirectSocket
verwendet werden kann, um WiFi Direct für die Kommunkation zu nutzen. Die Klasse implementiert ein einfaches Kommandozeilen-Chatprogramm. Da der Großteil der Logik für den Verbindungsaufbau bereits in der abstrakten Klasse WifiDirectSocket nimplementiert worden ist, werden für die Chat-Anwendung nur sehr wenige Codezeilen benötigt.