Mal wieder ein Anfänger

Python auf Einplatinencomputer wie Raspberry Pi, Banana Pi / Python für Micro-Controller
Antworten
vonvogel
User
Beiträge: 7
Registriert: Sonntag 16. Februar 2020, 20:10

Hallo zusammen!
Mal wieder ein neues Greenhorn das in Python einsteigen möchte!
Mein Einstieg in die Programmiererei war mit Turbopascal dann Delphi und jetzt Purebasic.
Als Mikrocontroller verwende ich für kleine bis mittlere Steuerungsaufgaben die Picaxe.
Nun habe ich mir als Programmiersprache für den Raspberry Python ausgesucht.

Als erste Aufgabe habe ich mir gestellt, die "wpa_supplicant.conf" auf einem Raspi öffnen, ändern und dann wieder abspeichern.
Der Pi ist per Wlan mit einem PC verbunden und ich möchte per Browser das Pythonscript auf dem Pi starten.
Auf dem Pi läuft bereits ein Nodered-Programm welches ebenfalls per Browser bedient wird.

Bisher habe ich auf meinem Notebook python-3.8.1, ActiveTcl-8.6.9.8609.2-MSWin32-x64-5ccbd9ac8, page-5.0.1, ninja-ide-2.3 installiert und die Pfade in Page und ninja eingestellt.
Mit Page habe ich eine primitive Gui erstellt die ein Textfeld und zwei Buttons (exit und speichern) besitzt.

Jetzt ist die Frage wie ich die "wpa_supplicant.conf" laden und wieder speichern kann und das per Browser?

LG

Wolfgang
__deets__
User
Beiträge: 14493
Registriert: Mittwoch 14. Oktober 2015, 14:29

Ich verstehe den Teil mit dem Browser nicht. Was genau soll da passieren?

Und ich steuere den wpa supplicant per DBUS mit Python fern. Ich habe das noch nicht auf github gestellt, kommt aber sehr bald. Und wenn man in der bestehenden config “saveconfig” oder so auf 1 setzt, dann kann man den supplicant die neu angelegten Netze selbst speichern lassen.
vonvogel
User
Beiträge: 7
Registriert: Sonntag 16. Februar 2020, 20:10

Also, der Pi steuert einen 3D-Scanner und wird über das Wlan ferngesteuert.
Ich möchte eine einfache Lösung schaffen um eine neuen Netzwerknamen und neues Passwort in die conf zu schreiben.
Dann würde ich den Pi rebooten und der Pi meldet sich in einem anderen WLAN oder Hotspot an.
Wenn ich davon ausgehe, dass ein Pythonprogramm auf dem Pi läuft und ich das dann per Wlan mit einem Browser starten kann bin ich unabhängig vom Betriebssystem auf dem PC oder kann es sogar per Handy starten.
__deets__
User
Beiträge: 14493
Registriert: Mittwoch 14. Oktober 2015, 14:29

Wenn du den PI in ein anderes Netzwerk bringst, dann kannst du doch nicht mehr mit dem Browser darauf zugreifen. Außer du bist da auch zum gleichen Netzwerk gewechselt. Und dann bin ich mir gar nicht sicher das dir der wpa supplicant hilft. Da läuft doch garantiert der NetworkManager, oder?

Last but not least: wozu page? Das ist doch Tk? Und läuft nicht im Browser.
vonvogel
User
Beiträge: 7
Registriert: Sonntag 16. Februar 2020, 20:10

Also das mit dem Netzwechsel ist so, dass ich den Pi einmal in meinem Wlan zuhause betreiben möchte und dann an einem Ort wo es kein WLan gibt und da soll er sich im Hotspot anmelden den ich mit meinem Notebook freigebe.
Natürlich hat der Pi dann in meinem WLan und im Hotspot eine andere IP aber das hab ich im Griff.
Bisher mache ich das so, dass ich die SD-Karte herausnehme die conf dann von Hand auf der SD-Karte in einem LinuxPC ändere und dann halt wieder reinschiebe. Allein durch die Änderung der conf funktioniert dann alles!

Das page Tk ist wusste ich aber nicht, dass es nicht im Browser läuft!
Dann hab ich das jetzt schon mal gelernt!
__deets__
User
Beiträge: 14493
Registriert: Mittwoch 14. Oktober 2015, 14:29

Und warum konfigurierst du dann nicht einfach ganz normal zwei Netzwerke, zuhause & hotspot? Du kannst doch beliebige viele anlegen, und der pi verbindet sich mit was auch immer verfügbar ist.
vonvogel
User
Beiträge: 7
Registriert: Sonntag 16. Februar 2020, 20:10

Ok, das war mir nicht klar. Dann ist dieses Problem schon mal gelöst!
Dann wird vermutlich die Liste der Netzwerke von oben nach unten abgearbeitet bis eins funktioniert?
Wie sieht denn der Eintrag für zwei Netze grundsätzlich aus?

Habe da noch eine Sache die ich gerne machen würde und zwar eine per Browser programmierbare Ladesteuerung für ein Elektrofahrzeug.
Der Pi auf einer Pixtend-Platine hängt in der Garage und soll zeitgesteuert mein E-Fahrzeug aufladen. Z.B. Montag von 5:30 bis 7:00 Uhr laden. Also eine kleine Oberfläche um den Tag, die Ladedauer und die Ladeendzeit einzustellen, einen Button für start und einen für Abbruch des Programms.
__deets__
User
Beiträge: 14493
Registriert: Mittwoch 14. Oktober 2015, 14:29

Du musst nichts selbst eintragen - einfach nur in der GUI jeweils anmelden, und der Network Manager speichert das. Wenn der pi dann ein bekanntes Netzwerk sieht, verbindet er sich.

Und zu deinem anderen Problem kann ich so nichts sagen - ich weiß nicht, was genau dafür notwendig ist. Natürlich kann man eine webanwendung schreiben, die einen Schalter darstellt. Aber der entscheidende Teil ist der im Hintergrund, der die eigentliche Steuerung macht.
vonvogel
User
Beiträge: 7
Registriert: Sonntag 16. Februar 2020, 20:10

Im Augenblick habe ich keine GUI!
Das NodeRed-Programm (Steuerprogramm für den 3D-Scanner) auf dem Pi wird beim booten automatisch gestartet und vom Browser über das Netzwerk gesteuert.

Zum Steuern der E-Fahrzeugaufladung muss nur ein Ausgang ein und wieder ausgeschaltet werden.
Dann gehen wir doch mal einen Schritt zurück und fangen mit einem primitivprogramm an:
Ein Button soll einen Ausgang einschalten und ein zweiter Schalter soll den Ausgang wieder ausschalten.
Dafür eine Webanwendung!
Benutzeravatar
sparrow
User
Beiträge: 4164
Registriert: Freitag 17. April 2009, 10:28

Geh noch einen Schritt zurück und schalte ohne GUI. Wie __deets__ bereits schrieb: Der entschiedende Teil ist der im Hintergrund. Da man GUI und Geschäftslogik immer voneinander trennen sollte, kannst (und solltest) du mit dem Schalten beginnen.

Und dann musst du dich in eines der Frameworks einarbeiten. Zum Beispiel Flask oder das "alles drin" Django.
vonvogel
User
Beiträge: 7
Registriert: Sonntag 16. Februar 2020, 20:10

Ok, noch einen Schritt zurück zu gehen kann ich gerne wenn ich damit meinem Ziel näher komme.
Die Frage die bleibt ist nun wie kann ich auf einem Raspberry der über ein Wlan mit einem Pc verbunden ist einen Ausgang geschalten?
Bzw. auf dem Raspberry müsste doch ein Server laufen oder nicht?

Könnt ihr mir vielleicht wenigstens ein Buch empfehlen das konkrete Anleitungen und Ansätze zu meiner Problemstellung gibt?
__deets__
User
Beiträge: 14493
Registriert: Mittwoch 14. Oktober 2015, 14:29

Ja klar. Wobei es ja auch geht sowas mit NodeRed zu bauen. Warum benutzt du das nicht einfach? Ansonsten gilt, was sparrow sagte - nimm ein Web Framework deiner Wahl. Und leg los. Oder such ein Beispiel raus, wie zb das hier: https://randomnerdtutorials.com/raspber ... rol-gpios/
vonvogel
User
Beiträge: 7
Registriert: Sonntag 16. Februar 2020, 20:10

Mit Nodered gehts mit Sicherheit aber die Geschichte mit den Flussdiagrammen ist mir zu unübersichtlich und umständlich.
Am Ende muss man viele Funktionen dann doch wieder mit code von Hand füllen.
Dein Link ist doch schon mal sehr interessant!
Habe mir heute erst mal zwei Bücher zugelegt und schaue wie weit ich damit komme!
Antworten