Flask Raspberry Pi System Info

Django, Flask, Bottle, WSGI, CGI…
Antworten
stefanonline
User
Beiträge: 2
Registriert: Dienstag 21. Juni 2022, 12:24

Hallo zusammen,

ich habe mir ein großes Projekt vorgenommen, bin jedoch was Flask betrifft noch am Start.
Ich hoffe ihr könnt mir bei der Umsetzung etwas unter die Arme greifen.

Das Ziel meines Projektes ist es eine Homepage zu erstellen, die auf einem Raspberry Pi läuft.
Bzw. eher ein Dashboard (HTML & Bootstrap) für den Raspberry Pi.

Als erstes möchte ich die Systemdaten des Raspberry Pi's auf der Unterseite "System Info" angezeigt bekommen.
Später möchte ich noch auf einer anderen Unterseite die GPIO Pins einlesen und auch den einen oder anderen Pin schalten.
Also eine kleine IoT Dashboard Webapp.

Auf der Seite "System Info" möchte ich zum Beispiel folgende Informationen angezeigt bekommen. (Möglichst alle die man Auslesen kann.)
  • IP Adresse
    CPU Temperatur
    CPU Auslastung
    Speicherauslastung
    Arbeitsspeicherauslastung
    etc.
Die Werte sollten sich auch ständig (alle 2-5 Sekunden) updaten, ohne dass die ganze Seite neu geladen werden muss.
Nach meiner Recherche ist hier Socket.io die Lösung.

Da ich bestimmte Werte, wie zum Beispiel die CPU Temperatur später als Graph (Verlauf) anzeigen lassen möchte, stehlt sich hier für mich die Frage, ob es nicht besser ist alle Werte in eine Datenbank zu speichern, und dann nur auf die Werte der Datenbank zuzugreifen.

Ich hoffe ich mein Ansatz mit Flask ist hier der Richtige.
Da ich die Oberfläche später sehr frei gestalten möchte, sind fertige Lösungen wie Grafana etc. nichts für mein Projekt.

Ich würde mich freuen, wenn mir hier der Eine oder Andere (gerne auch Schritt für Schritt :wink: ) erklären könnte wie ich vorgehen sollte/muss.

Danke im Voraus für eure Hilfe!
__deets__
User
Beiträge: 14493
Registriert: Mittwoch 14. Oktober 2015, 14:29

Flask ist schon ok, socket.io sicher auch. Ich wuerde sowas wie InfluxDB fuer die Datenbank benutzen, weil das fuer Zeitserien gemacht ist. Aber es geht auch fast alles andere. Nur rohe Textdateien solltest du aus Gruenden der Robustheit nicht benutzen.

Schritt fuer Schritt wird aber nichts. Das ist so also ob du ein Haus bauen willst, und dann soll dir wer sagen, wie das Schritt fuer Schritt geht. Hier buddeln, da Grundwasser abdichten, dort Fundament giessen, etc. pp. Wir koennen dir hier bei konkreten Fragen helfen, aber das laeuft auf Projektplanung & Durchfuehrung hinaus. Das macht keiner fuer dich.
Sirius3
User
Beiträge: 17710
Registriert: Sonntag 21. Oktober 2012, 17:20

Das ganze sollte mit auf der Flask-Seite recht simple sein. Komplizierter dürfte die ganze Interaktion per Javascript im Browser sein.
socket.io ist für so eine Aufgabe unnötig komplex, da man einfach regelmäßig per `fetch` die Daten als ganz normaler GET-Request abfragen kann.
stefanonline
User
Beiträge: 2
Registriert: Dienstag 21. Juni 2022, 12:24

Danke für eure Antworten.
Zumindest weiß ich jetzt schon mal, dass Flask für mein Projekt nicht ganz falsch ist.

Müsste ich bei einem "ganz normalen GET-Request" nicht ständig die ganze Seite aktualisieren?
__deets__
User
Beiträge: 14493
Registriert: Mittwoch 14. Oktober 2015, 14:29

Nein, wenn es mit JavaScript einfach Daten holt & einbaut. Konzeptionell ist das dem socket.Io ähnlich, letzteres geht nur mit JS, GETs kann man natürlich auch einfach per refresh machen.
Benutzeravatar
kbr
User
Beiträge: 1487
Registriert: Mittwoch 15. Oktober 2008, 09:27

Nein. Du musst lediglich das zurückliefern, was der Sender des Requests erwartet. Bei einem AJAX call kann das json oder anderes sein. Vielleicht ist für Dein Projekt htmx geeignet; das kann auch pollen.
Antworten