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


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von R. F. (inet_surfer88)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht lesenswert
Schau Dir mal das Django Framework an.

von imonbln (Gast)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
1 lesenswert
nicht 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)


Bewertung
1 lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.