Es ist möglich, ich schlage vor, dass Sie ein lighttpd mit einem Webservice für Ihre App verwenden. Danach wechseln Sie einfach zwischen hostapd (AP-Modus) und wpa_supplicant (Client-Modus). Es ist so einfach wie einen Dienst zu stoppen und einen anderen Wia-Shell-Befehl zu starten.
UPDATE: Einige Tipps. Am einfachsten ist es, ein Systemd als Triggerhappy Switcheroo zu verwenden und es folgendermaßen ausführen zu lassen:
- Verwenden Sie wpa_supplicant als Service
- Ein Hostapd ist bereits ein Dienst in Ubuntu / Debian, Sie müssen also nichts dagegen tun.
Konfigurieren Sie als Nächstes ISC-DHCPD und Hostapd für Ihren AP-Modus, überprüfen Sie, ob sie als AP funktionieren. Sie können also einem Netzwerk beitreten und eine IP-Adresse erhalten. DNS von Ihrem DHCP kann von einem Gerät aus pingfähig sein und funktioniert. Verwenden Sie danach dieses Cheatsheet auf SystemD , damit dhcpd und hostapd beim Booten nicht automatisch gestartet werden :
#systemctl disable hostapd.service
#systemctl disable isc-dhcp-server.service
und hör auf mit SoBs;) einfach so:
#systemctl stop hostapd.service
#systemctl stop isc-dhcp-server.service
Danach über einen Link, auf den ich hingewiesen habe, machen Upstrings wpa_supplicant (installieren Sie es so :) ebenfalls zu apt-get install wpasupplicant
einem Dienst und richten Sie es so ein, dass es wie gewünscht funktioniert, dh Ihr RPi, das mit dem AP verknüpft ist, den Sie verwenden möchten, erhält IP + DNS, kann pingen / wget usw. Danach - deaktivieren und stoppen Sie den Dienst genau so, wie wir es getan haben :
#systemctl stop wpa_supplicant.service
#systemctl disable wpa_supplicant.service
Danach geht hier die Magie :) Um vom Modus in einen anderen zu wechseln, stoppen Sie einfach die Dienste aus einem vorherigen Modus und starten Sie die benötigten (dh Stop wpa_supplicant
and Start hostapd
und isc-dhcp-server
) wie folgt:
#systemctl stop wpa_supplicant.service && systemctl start hostapd.service && systemctl start isc-dhcp-service.service
Ja, in einer einzigen Zeichenfolge . Das Geheimnis hier liegt in der " && " -Konstruktion - es ist eine Art Warteschlange, in der das nächste Element nur ausgeführt wird , wenn das vorherige nicht fehlgeschlagen ist. Überprüfen Sie also, wo immer Sie diese Pipe anrufen, den Exitcode 0. Dies garantiert Ihnen, dass beim Umschalten der Modi alles in Ordnung war. Das ist es, zögern Sie nicht, Fragen zu stellen, wenn Sie weitere Hilfe benötigen!