Forum: PC-Programmierung Programmiersprache für Weboberfläche für Python-Programm


von R. F. (inet_surfer88)


Lesenswert?

Hallo,

ich habe einen Raspberry auf dem ein Python-Programm für eine 
Lichtsteuerung läuft. Das Programm steuert die Beleuchtung in dem es in 
festgelegten, statischen Mustern Befehle über eine RS232-Schnittstelle 
an eine Steuerbox sendet.

Zukünftig möchte ich über eine Weboberfläche die Steuerung beeinflussen. 
Es sollen Bilder mit der Anordnung der Lampen auf der Weboberfläche zu 
sehen sein. Wenn ich in unterschiedliche Bereiche der Bilder klicke 
sollen unterschiedliche Befehle ausgeführt werden. Es sollen pro Bild 
also mehrere Buttons hinterlegt sein.

Nun bin ich auf der Suche nach einer geeigneten Lösung. Ich habe mir 
schon mal Flask angeschaut. Allerdings ist mir hier nicht ganz klar wie 
ich einem Bild mehrere Buttons zuordnen kann. Bevor ich jetzt unnötig 
Zeit investiere um mich in eine Sprache einzuarbeiten und dann hinterher 
feststelle das es unnötig oder ineffizient war möchte ich mal eure 
Meinung hören wie man das am Besten realisiert. Eventuell mit "normalem" 
HTML? Aber dann bräuchte ich irgend ein "Add-On" was Befehle über die 
serielle vom RPI senden kann. Für das einfache Ansteuern der GPIO-Pins 
habe ich genug Beispiele im Netz gefunden, z.B. über PHP. Aber zur 
seriellen finde ich nichts. Perfekt wäre es natürlich wenn ich einfach 
eine Variable an das vorhandene Python-Programm übergeben könnte welches 
ich dann einfach erweitern würde.

von Ingo E. (ogni42)


Lesenswert?

Schau Dir mal das Django Framework an.

von imonbln (Gast)


Lesenswert?

R. F. schrieb:
> Nun bin ich auf der Suche nach einer geeigneten Lösung. Ich habe mir
> schon mal Flask angeschaut. Allerdings ist mir hier nicht ganz klar wie
> ich einem Bild mehrere Buttons zuordnen kann.

Teile und Herrsche! In Python nimmt man für sowas Flask oder Django als 
Backend wie du schon richtig recherchiert hast. Flask ist mehr bottum 
Up, während Django behauptet, Battery Included. Ich persönlich nehme 
öfter Flask da meine Projekte meisten eher klein sind, aber das ist 
Geschmackssache.


Unabhängig davon, wirst du nicht drumherum kommen ein paar Dinge in HTML 
[js &CSS] zu machen, auch wenn du das Flask Framework als Backend hast. 
Das Image versiehst du mit Areas in HTML (jinja2 Templates sind deine 
Freunde) und jede Area Element linkt dann auf einen anderen Endpoint 
(bzw. denn gleichen mit anderer Payload). Außerdem wäre es irgendwie 
nett, wenn deine Steuerung einen Rückkanal für den Status Quo hat.

von Voodoo (Gast)


Lesenswert?

Nutze Flask, deine Weboberfläche machst du in HTML und CSS.
Oder du nimmst Blueprints wenn es größer wird.
Aber einfacher und sauberer als mit Flask wird es glaube ich nicht. IMHO

von R. F. (inet_surfer88)


Lesenswert?

Danke für die Antworten. Dann werde ich erstmal mit Flask weitermachen. 
Hatte bedenken das es in die falsche Richtung läuft, aber dem ist ja 
offenbar nicht so. Also lerne ich hier erstmal weiter mit Flask.

von S. R. (svenska)


Lesenswert?

Ich hab mal was mit web.py gebaut. Das war eigentlich auch sehr 
angenehm, halt kein dickes Framework und daher eher winzig: 
https://webpy.org/.

von Jemand (Gast)


Lesenswert?

R. F. schrieb:
> Danke für die Antworten. Dann werde ich erstmal mit Flask weitermachen.
> Hatte bedenken das es in die falsche Richtung läuft, aber dem ist ja
> offenbar nicht so. Also lerne ich hier erstmal weiter mit Flask.

Flask ist sicherlich eine sehr gute Möglichkeit, wenn man kein 
vollständiges (und entsprechend großes) Framework wie Django erlernen 
will. Ich persönlich kenne und nutze beide, aber viel häufiger Flask.

Was die Darstellung Deines Wohnraumes mit den Lampen etc. anget, so 
kannst Du das mit dem SVG in HTML5 machen. Dort lassen sich dann auch 
hübsche Buttons erzeugen, die bei einem Klick im Hintergrund einen 
AJAX-Call zu Deinem Flask- oder Django-Programm machen.

von Le X. (lex_91)


Lesenswert?

Jemand schrieb:
> Was die Darstellung Deines Wohnraumes mit den Lampen etc. anget, so
> kannst Du das mit dem SVG in HTML5 machen. Dort lassen sich dann auch
> hübsche Buttons erzeugen, die bei einem Klick im Hintergrund einen
> AJAX-Call zu Deinem Flask- oder Django-Programm machen.

Wenn das Projekt mal solche Dimensionen annimmt würde ich gleich zu 
einem Hausautomatisierungs-Framework raten, z.B. ioBroker.
Die Webgui kriegst du da mühelos on top, einfach per drag&drop paar 
widgets reinziehen.

Ich hätte dem TE schon eher dazu geraten, allerdings, er hat ja momentan 
nur eine Lampe und bereits eine funktionierende Lösung.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.