Hallo,
ich möchte einen Pi so ausliefern, dass man nach dem Booten die Zugangsdaten für das WLAN eingeben kann. Dafür möchte ich die notwendigen Dinge abfragen und in der entsprechenden config abspeichern. Anschließend soll dann automatisch eine bestimmte Internet Seite im Kiosk Modus aufgerufen werden.
Ist Python hier der richtige Ansatz, oder sollte man so etwas lieber anders angehen?
Danke und Gruß,
Mondy
Einrichtung der WLAN Verbindung per Script
Prinzipiell kann man das mit Python machen. Aber wenn du eh in eine GUI bootest, fuer den Kiosk-Modus, kannst du doch auch den Network-Manager benutzen? Bis du eine GUI so weit poliert hast, bis sie aehnlich gut ist und auch das richtige an die richtigen Stellen schreibt, nimm doch was es gibt.
Eine andere Moeglichkeit (die ich auch nutze) besteht darin, die SD-Karte zu manipulieren. Fast jeder Computer kann SD-Karten lesen (mit Adapter). Die FAT-Partition des PIs koennte dann eine WIFI-settings-Datei enthalten, deren Daten du nach dem Booten in die entsprechende Konfiguration schreibst.
Eine andere Moeglichkeit (die ich auch nutze) besteht darin, die SD-Karte zu manipulieren. Fast jeder Computer kann SD-Karten lesen (mit Adapter). Die FAT-Partition des PIs koennte dann eine WIFI-settings-Datei enthalten, deren Daten du nach dem Booten in die entsprechende Konfiguration schreibst.
- DeaD_EyE
- User
- Beiträge: 1020
- Registriert: Sonntag 19. September 2010, 13:45
- Wohnort: Hagen
- Kontaktdaten:
Wenn man etwas Idiotensicher macht, wird einfach ein neuer Idiot erfunden.
Der Benutzer muss eine Tastatur anschließen, um den Schlüssel eingeben zu können.
D.h. der Benutzer wird ggf. auch eine Maus benötigen, wenn der Fokus nicht im Fenster/Eingabefeld liegt.
Die Möglichkeiten sind vielfältig.
Du kannst...
Der Benutzer muss eine Tastatur anschließen, um den Schlüssel eingeben zu können.
D.h. der Benutzer wird ggf. auch eine Maus benötigen, wenn der Fokus nicht im Fenster/Eingabefeld liegt.
Die Möglichkeiten sind vielfältig.
Du kannst...
- Dem Kunden einmal zeigen wo man auf das WLAN-Symbol klicken muss, um eine Verbindung aufzubauen und wo man dann das Passwort eingeben muss. Das würde dir Zeit sparen. Gleichzeitig hat das den Vorteil, dass der Kunde auch noch etwas lernt.
- GUI Anwendung, die beim ersten booten geöffnet wird, die WLAN-Hotspots anzeigt und nach dem Passwort fragt. Der Schwierigkeitsgrad wäre da nicht besonders groß. Tkinter würde für diese Aufgabe ausreichen.
- Webanwendung: Hat den Vorteil, dass man diese ggf. auch nach dem einbinden woanders aufrufen kann.
- Beim ersten Bootvorgang in der Konsole nach der SSID und dem Passwort fragen (Fehleranfällig, sieht hässlich aus)
sourceserver.info - sourceserver.info/wiki/ - ausgestorbener Support für HL2-Server
Noch mal eine weitere Idee:
Wenn es auch Lua sein darf (und nicht Raspbian sein muss), wäre ACF für/von Alpine Linux vielleicht einen Blick wert. ACF ist ein Framework, mit dem man web-basierte Konfigurationsoberflächen, ähnlich wie man sie z.B. von Routern kennt, bauen kann. Du könntest deine Konfiguration als Modul realisieren und beim Erststart einen Browser zu dieser Seite öffnen. Diese Variante bietet sich primär an, wenn du noch ein paar der weiteren Features von ACF gebrauchen kannst; ansonsten ist die Variante von __deets__ m.M.n. zielführender.
Wenn es auch Lua sein darf (und nicht Raspbian sein muss), wäre ACF für/von Alpine Linux vielleicht einen Blick wert. ACF ist ein Framework, mit dem man web-basierte Konfigurationsoberflächen, ähnlich wie man sie z.B. von Routern kennt, bauen kann. Du könntest deine Konfiguration als Modul realisieren und beim Erststart einen Browser zu dieser Seite öffnen. Diese Variante bietet sich primär an, wenn du noch ein paar der weiteren Features von ACF gebrauchen kannst; ansonsten ist die Variante von __deets__ m.M.n. zielführender.
Das mit der Webanwendung (lokaler Webserver, HTML, PHP, JavaScript) gefällt mir am besten.
Kann man damit denn die WLAN-Hotspots auslesen, und anzeigen lassen?
Und kann man mit einer Webanwendung z.B. das Gerät neu booten?
Danke und Gruß,
Mondy
Kann man damit denn die WLAN-Hotspots auslesen, und anzeigen lassen?
Und kann man mit einer Webanwendung z.B. das Gerät neu booten?
Danke und Gruß,
Mondy
@Mondy: eine lokale Webanwendung sollte eher so aussehen: Python, HTML, JavaScript oder wenn Du auf node.js setzt nur JavaScript und HTML.
Einen eigenen Webserver braucht man nicht, weil Python oder node.js schon einen mitbringen. PHP für neue Projekte einzusetzen würde ich nicht empfehlen.
Da alles lokal läuft, hat der Server-Part (Python oder node.js) vollen Zugriff auf das Gerät.
Einen eigenen Webserver braucht man nicht, weil Python oder node.js schon einen mitbringen. PHP für neue Projekte einzusetzen würde ich nicht empfehlen.
Da alles lokal läuft, hat der Server-Part (Python oder node.js) vollen Zugriff auf das Gerät.
Mit dem PI hat Webentwicklung ja erstmal nichts zu tun. Es gibt viele Tutorials dazu, wie man da sein Python macht. Ich würde aber erstmal recherchieren, was du tun musst um zB die Liste der SSIDs zu bekommen, oder noch wichtiger eine gegebene Konfiguration zu setzen.
Worin dann die Anwendung Programmierung wird ist zweitrangig. Ich würde es auch nicht in PHP machen, aber ich würde auch nicht nur aus Prinzip eine neue Sprache lernen, wenn das Problem auch mit der schon beherrschten lösbar ist. Und das sollte es in diesem Fall.
Worin dann die Anwendung Programmierung wird ist zweitrangig. Ich würde es auch nicht in PHP machen, aber ich würde auch nicht nur aus Prinzip eine neue Sprache lernen, wenn das Problem auch mit der schon beherrschten lösbar ist. Und das sollte es in diesem Fall.
- DeaD_EyE
- User
- Beiträge: 1020
- Registriert: Sonntag 19. September 2010, 13:45
- Wohnort: Hagen
- Kontaktdaten:
Ein normaler Webserver (Apache2, nginx) liefert erstmal nur Dateien aus (html, png, jpg, css, js usw...).
Also GET-Request kommt rein, Webserver antwortet, sieht nach ob die Datei vorhanden ist und überträgt sie dann einfach.
Wenn du jetzt die Website so ausliefern willst, dass z.B. Hotspots angezeigt werden, muss der Webserver das selbst machen.
Die Informationen werden im Hintergrund abgefragt, das HTML-Template wird durch Substitution mit dem Inhalt gefüllt und letztendlich zum Client übertragen.
Mal ein kleines Beispiel mit Flask, dass einfach die Uhrzeit als Text ausgibt:
Es gibt auf jeden Fall viel zu lernen.
Ich würde mal behaupten, dass es für den Anfang etwas zu viel aufeinmal ist.
Also GET-Request kommt rein, Webserver antwortet, sieht nach ob die Datei vorhanden ist und überträgt sie dann einfach.
Wenn du jetzt die Website so ausliefern willst, dass z.B. Hotspots angezeigt werden, muss der Webserver das selbst machen.
Die Informationen werden im Hintergrund abgefragt, das HTML-Template wird durch Substitution mit dem Inhalt gefüllt und letztendlich zum Client übertragen.
Mal ein kleines Beispiel mit Flask, dass einfach die Uhrzeit als Text ausgibt:
Code: Alles auswählen
from datetime import datetime as dt
from flask import Flask
app = Flask('__name__')
# hier wird die route definiert
@app.route('/')
def root():
# hier wird der Inhalt als str zum Client übertragen
# in diesem Fall einfach das aktuelle Datum+Uhrzeit als string
jetzt = dt.now()
return str(jetzt)
# hier wird eine Schleife gestartet
# und der app wartet auf eingehende Request
# bei jedem Request wird die zugeordnete Funktion der Route aufgerufen
app.run()
Ich würde mal behaupten, dass es für den Anfang etwas zu viel aufeinmal ist.
sourceserver.info - sourceserver.info/wiki/ - ausgestorbener Support für HL2-Server