Programmiersprache für Weboberfläche für Python-Programm

OP #6462635
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.
Gast #6462664
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.
Gast #6462821
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.
#6462878
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

Eine eigene Frage? Dieser Thread ist über 5 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.