Hallo,
mein erster Beitrag, bin Python Anfänger, mein erstes Projekt ist eine Wetterstation, ich kann inzwischen Daten zyklisch über die serielle Schnittstelle lesen und in eine Datenbank (SQLite) schreiben.
Das ganze mache ich mit eine Schleife und einem simplen time.sleep(120) alle 2 Minuten. Jetzt möchte ich aber die abgespeicherten Daten wieder aus der DB auslesen und mit einer simplen statische HTML Seite visualisieren. Nach einiges an Recherche mache ich das jetzt in einem eigenen Thread, in diesem rufe ich eine Funktion auf die mir die Daten mit einzelnen SQL Aufrufen aus der DB holt. Also jeder Wert (mittlere Temperatur diese Woche, Niederschlag, gestern/letzte Woche, ...) wird alle 120 s mit einer Abfrage live aus der DB geholt.
Meine Frage:
ist das ganze sinnvoll oder macht man das in der "echten" Programmierwelt anders? Ich habe auch davon gelesen die Daten zuerst ein eine Pyhton Liste (oder ein Dict) zu lesen und dann den Daten von dort zu verarbeiten, nur wüßte ich nicht was das in meinem Fall für Vorteile hätte, ich habe ja genug Zeit (120 s) die Daten abzurufen und zu verarbeiten.
Danke fürs lesen,
Schappenberg
Grundsatzfrage - Wetterdaten aus SQLite DB auslesen
- noisefloor
- User
- Beiträge: 3856
- Registriert: Mittwoch 17. Oktober 2007, 21:40
- Wohnort: WW
- Kontaktdaten:
Hallo,
... und willkommen im Forum.
"Thread" hört sich falsch an... Wo läuft der Thread denn? Im Programm der Datenerfassung? Grundsätzlich kannst und solltest du das Trennen, d.h. ein Python-Skript für die Erfassung und eins, welches die Webseite ausliefert.
Die Grafik würde ich denke ich auch nur "on demand" generieren und nicht alle 120 Sekunden. Du hast ja sicherlich Stunden (wie nachts) wo sich das nie einer ansieht.
Wie erstellst du die Webseite denn? Welches Python Webframework verwendest du?
Wenn dein Skript zur Messdatenerfassung "nur" alle 120 Sekunden läuft, dann würde ich es tendenziell eher alle 120 Sekunden periodisch über eine systemd Timer Unit ausführen anstatt das Skript 120 Sekunden warten zu lassen.
Gruß, noisefloor
... und willkommen im Forum.
"Thread" hört sich falsch an... Wo läuft der Thread denn? Im Programm der Datenerfassung? Grundsätzlich kannst und solltest du das Trennen, d.h. ein Python-Skript für die Erfassung und eins, welches die Webseite ausliefert.
Die Grafik würde ich denke ich auch nur "on demand" generieren und nicht alle 120 Sekunden. Du hast ja sicherlich Stunden (wie nachts) wo sich das nie einer ansieht.
Wie erstellst du die Webseite denn? Welches Python Webframework verwendest du?
Wenn dein Skript zur Messdatenerfassung "nur" alle 120 Sekunden läuft, dann würde ich es tendenziell eher alle 120 Sekunden periodisch über eine systemd Timer Unit ausführen anstatt das Skript 120 Sekunden warten zu lassen.
Gruß, noisefloor
-
- User
- Beiträge: 11
- Registriert: Sonntag 18. Oktober 2015, 23:12
Hallo,
Danke für die rasche Antwort! Ja, die Auswertung ist einfach eine Funktion im Hauptprogramm, die nach der Datenabfrage von der Wetterstation aufgerufen wird.
Also Webframework hätte ich jetzt kein spezielles verwendet, ich habe als Buch zum Anfangen "Head first Python" und da wird ganz einfach HTML Syntax Zeile für Zeile generiert. Wenn du allerdings einen Framework Vorschlag für Anfänger (und ABSOLUT einfacher Web Seite) hast, nehm ich gern
Der Vorschlag mit dem systemd Timer hört sich vernünftig an, das werd ich mal so umbauen.
THX, Schappenberg
Danke für die rasche Antwort! Ja, die Auswertung ist einfach eine Funktion im Hauptprogramm, die nach der Datenabfrage von der Wetterstation aufgerufen wird.
Also Webframework hätte ich jetzt kein spezielles verwendet, ich habe als Buch zum Anfangen "Head first Python" und da wird ganz einfach HTML Syntax Zeile für Zeile generiert. Wenn du allerdings einen Framework Vorschlag für Anfänger (und ABSOLUT einfacher Web Seite) hast, nehm ich gern
Der Vorschlag mit dem systemd Timer hört sich vernünftig an, das werd ich mal so umbauen.
THX, Schappenberg
- __blackjack__
- User
- Beiträge: 13112
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
@schappenberg: `bottle` oder `flask` sind wohl die beiden verbreitetsten Mikrorahmenwerke für Webanwendungen.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
- noisefloor
- User
- Beiträge: 3856
- Registriert: Mittwoch 17. Oktober 2007, 21:40
- Wohnort: WW
- Kontaktdaten:
Hallo,
Wie gesagt würde man das eher so machen, dass man a) ein Webframework wie Flask oder Battle verwendet, das b) unabhängig von der Datenerfassung läuft und c) die Seite on-demand (also beim entsprechenden HTML-Request) baut und ausliefert - und nicht alle X Min automatisch.
Gruß, noisefloor
Eigentlich ist alles einfacher, als die HTML-Seite so zusammen zu bauen...Also Webframework hätte ich jetzt kein spezielles verwendet, ich habe als Buch zum Anfangen "Head first Python" und da wird ganz einfach HTML Syntax Zeile für Zeile generiert.
Wie gesagt würde man das eher so machen, dass man a) ein Webframework wie Flask oder Battle verwendet, das b) unabhängig von der Datenerfassung läuft und c) die Seite on-demand (also beim entsprechenden HTML-Request) baut und ausliefert - und nicht alle X Min automatisch.
Gruß, noisefloor
-
- User
- Beiträge: 11
- Registriert: Sonntag 18. Oktober 2015, 23:12
Danke für die Infos, dann weiß ich schon mal in welche Richtung ich mich weiter informiere!