Messdaten als webseite mittels python visualisieren

Django, Flask, Bottle, WSGI, CGI…
Antworten
bastel-wastel
User
Beiträge: 28
Registriert: Samstag 20. Februar 2010, 15:14

Hallo miteinander,

ich bräuchte einen Tipp zum vorgehen für folgendes Problem:

Ich habe meinen raspberry pi mit Temperatursensoren versehen. Über ein python-skript lese ich die Sensoren aus und logge die Daten in einfache Textdateien und erstelle mir auch Diagramme (per matplotlib) daraus. Jetzt möchte ich mir die aktuellen Temperaturen jedoch auch anzeigen lassen. Damit ich von allen Geräten (PC, Smartphone) darauf zugreifen kann bietet sich eine einfache Webseite an. Der webserver läuft dann auf dem raspberry pi. Die webseite soll nicht viel können:
- Anzeigen der Diagramme
- Anzeigen der aktuellen Temperaturen (am besten sollen sich die Werte alle x Sekunden aktualisieren)
- Die Ermittlung der aktuellen Temperaturen erfolgen über ein python-skript, daher muss dieses integriert werden
- möglichst "einfach" zu erstellen sein

Jetzt gibt es dafür ja viele unterschiedliche Wege und mir als web-Laie fehlt der Überblick und das Wissen um diese bewerten zu können. Daher meine Frage an Euch: Welches Vorgehen wäre hier empfehlenswert? Aufgrund meiner niedrigen Anforderungen wäre mir natürlich eine möglichst einfache Lösung am liebsten.

Viele Grüße
bastel
Sirius3
User
Beiträge: 17750
Registriert: Sonntag 21. Oktober 2012, 17:20

@bastel-wastel: um das Lernen von Web-Grundlagen wirst Du nicht drumrumkommen. Die Anbindung an sich ist mit einem Mikrorahmenwerk wie bottle in wenigen Zeilen erledigt.
BlackJack

@bastel-wastel: Wobei ich das Programm zum Ermitteln der Temperaturen vielleicht nicht in die Webanwendung einbauen würde, denn die werden ja jetzt schon irgendwie regelmässig ausgelesen, das muss man ja nicht zusätzlich noch mal machen. Also würde ich die Webanwendung eher die letzten Werte aus den Aufzeichnungen anzeigen lassen. Eventuell auch von Textdateien auf eine Datenbank umsteigen.
bastel-wastel
User
Beiträge: 28
Registriert: Samstag 20. Februar 2010, 15:14

Danke Euch beiden:

@ Sirius3: Mir ist schon klar, dass ich mich einarbeiten muss. Aber wenn man am Anfang steht ist das ein Fass ohne Boden - zumindest wenn man nicht weiß, in welche Richtung man laufen muss ;)

@ BlackJack: Es war schon so geplant, dass die Messdatenerfassung getrennt von der Anzeige läuft. Aber um die letzten Messdaten anzuzeigen muss man diese ja auch wieder aus den Datendateien laden. Das hätte ich halt mit python gemacht, weil ich nichts anders kann ;)
Datenbank hört sich auch interessant an aber zuerst mal die anderen Baustellen ;)

Ich habe heute ein wenig Recherchiert. Möglicherweise komme ich am Einfachsten davon, wenn ich mir html-Seiten manuell, bzw. als cgi-Skript erstelle. Ist aber wahrscheinlich nicht besonders elegant..
BlackJack

@bastel-wastel: Ja, Datenbank wäre ein etwas umfangreicheres zusätzliches Thema.

Das mit dem HTML manuell bzw. CGI ist IMHO nicht der einfachste Weg oder zumindest ist der gleich schwer wie eines der Mikrorahmenwerke nur das die nicht ganz so primitiv sind, also man nicht *alles* selber machen muss auf unterster Ebene. Bottle wurde ja schon erwähnt. Schau Dir vielleicht einfach mal das Tutorial davon an. Das ist auch relativ schnell durchgearbeitet.
bastel-wastel
User
Beiträge: 28
Registriert: Samstag 20. Februar 2010, 15:14

Das bottle-Tutorial habe ich durchgearbeitet aber ich bin mir nicht sicher, ob ich die Idee dahinter verstanden habe. Die webseite an sich muss ich ja nach wie vor manuell per html erstellen. Hilfreich ist natürlich die template-engine, um immer die aktuellen Messdaten einsetzen zu können. Aber welche Arbeit nimmt mir ein framework wie bottle jetzt denn nun wirklich ab?
Sirius3
User
Beiträge: 17750
Registriert: Sonntag 21. Oktober 2012, 17:20

@bastel.wastel: ein Framework übernimmt einem natürlich nicht, HTML-Code zu schreiben. Woher soll es auch wissen, wie die Seite aussehen soll? Das Rahmenwerk übernimmt aber das Parsen der Anfrage, dass die richtige Funktion bei der passenden URL aufgerufen wird, und dass der Browser schließlich die HTML-Seite, die Du generierst, auch geliefert bekommt.
Das ist wie wenn Du sagst, für was brauch ich ein Auto, wenn ich noch selber lenken muß. Aber jetzt schau mal, wie Du von hier nach Hannover kommst, ohne Auto.
bastel-wastel
User
Beiträge: 28
Registriert: Samstag 20. Februar 2010, 15:14

Ah, ok.
Mehr als zwei Seiten (urls) werde ich zwar nicht haben, dass sich das lohnen würde aber ich denke, dass ich dann trotzdem mit bottle beginnen werden. Vielleicht kann ich es mal für ein erweitertes Projekt gut brauchen.

Danke!
Sirius3
User
Beiträge: 17750
Registriert: Sonntag 21. Oktober 2012, 17:20

@bastel-wastel: Was heißt hier lohnen. Auch bei nur einer URL muß der ganze Verwaltungskram ja irgendwie gemacht werden.
BlackJack

@bastel-wastel: Ausserdem werden das auch bei diesem Projekt vielleicht schnell mehr URLs als Du bisher geplant hast. Zum Beispiel möchte man ja eher nicht das die ganze Webseite regelmässig neu geladen wird um die Temperaturwerte zu aktualisieren. Also wird das irgendwann auf AJAX-Anfragen per JavaScript hinauslaufen mit denen nur die Werte als JSON-Objekt geholt werden und dann an den entsprechenden Stelle in der Webseite aktualisiert werden. Ich weiss nicht ob Du bei den zwei URLs diese URL auch schon im Blick hattest. Und auch hier hilft Bottle indem man sich nicht um das kodieren als JSON und den richtigen Content-Header kümmern muss, sondern einfach ein Wörterbuch zurück gibt.
bastel-wastel
User
Beiträge: 28
Registriert: Samstag 20. Februar 2010, 15:14

@BlackJack: Die Frage, wie man Daten aktualisiert, ohne die ganze Seite neu laden zu müssen stelle ich mir tatsächlich ;)
Das ganze wird echt umfangreicher, als zuvor gedacht.
Antworten