Hi, Ich möchte einen Webserver auf meinem Raspberry Pi aufsetzen. Ziel ist es, einen Datenlogger zu erstellen und diese Daten dann grafisch auf meinem Webserver darzustellen. Cool wäre es nun, wenn ich die Daten direkt über den Webserver auf meinen PC runterladen könnte. Also dass ich die Daten als .csv Datei oder so erhalte. Gibt es dazu irgendwelche Beispiele im Internet oder weiss jemand, wie ich diese Sache angehen soll? Danke
Manuel N. schrieb: > Gibt es dazu irgendwelche Beispiele im Internet oder weiss jemand, wie > ich diese Sache angehen soll? Ja. Dein Programm, das für das Logging zuständig ist, muss einfach zyklisch die Daten zusammen mit einem Zeitstempel in eine CSV-Datei kippen. Die kannst du dann bei Bedarf herunterladen.
Sebastian R. schrieb: > Manuel N. schrieb: >> Gibt es dazu irgendwelche Beispiele im Internet oder weiss jemand, wie >> ich diese Sache angehen soll? > > Ja. Dein Programm, das für das Logging zuständig ist, muss einfach > zyklisch die Daten zusammen mit einem Zeitstempel in eine CSV-Datei > kippen. Die kannst du dann bei Bedarf herunterladen. Danke für deine Antwort. Wie nennt sich der Fachbegriff für "bei Bedarf herunterladen"? Nach welchem Stichwort kann im Internet suchen, damit ich herausfinde wie das geht, die Daten so downzuloaden?
Manuel N. schrieb: > Nach welchem Stichwort kann im Internet suchen, damit > ich herausfinde wie das geht, die Daten so downzuloaden? Kommt halt drauf an, was du unter "downloaden" verstehst. Da ist alles von SCP, FTP bis hin zu HTTP bei. Am Ende ist es halt nur die Datei an der richtigen Stelle zur Verfügung stellen, wo der User sie erwartet.
Manuel N. schrieb: > Wie nennt sich der Fachbegriff "Klicken"? Der Anwender klickt mit dem Mauszeiger auf den Link zum CSV, und sein Webbrowser startet den Download? Du musst die Datei mehr oder weniger einfach nur in den Webserver-Ordner legen, der Rest ist Standardfunktionalität.
:
Bearbeitet durch User
Εrnst B. schrieb: > Manuel N. schrieb: >> Wie nennt sich der Fachbegriff > > "Klicken"? > > Der Anwender klickt mit dem Mauszeiger auf den Link zum CSV, und sein > Webbrowser startet den Download? Und wie binde ich das ganze ein? Hinter diesem Button wird ja etwas stecken, was den Download auslöst. Wie geht das?
Manuel N. schrieb: > Wie geht das? Das ist Standardfunktionalität von Webbrowser und Webserver. Die machen das, was sie immer machen, wenn ein Link geklickt wird. Für einen "Download" passiert da nix magisches extra.
Manuel N. schrieb: > Wie geht das?
1 | <a h ref='http://example.com/logfile.csv' download>Logfile herunterladen</a > |
Erzwingt den Download, anstatt nur weiterzuleiten.
:
Bearbeitet durch User
Manuel N. schrieb: > Und wie binde ich das ganze ein? Der Button ist einfach ein Link. Du solltest aber in Deinem Webserver den korrekten MIME Type für CSV Dateien festlegen, z.B. application/csv oder text/csv. "MIME Type Download CSV" sollte als Suchbegriff ausreichen.
Oder du schreibst ein Script in (z.B.) PHP, dass die Daten dann zusammenstellt und anbietet. Unter "CSV dowload PHP" wird sich was anpassbares finden.
oder ein Directory anzeigen lassen, für z.B. Tageslogs.
Dirk B. schrieb: > Oder du schreibst ein Script in (z.B.) PHP, dass die Daten dann > zusammenstellt und anbietet. Nicht komplizierter machen als es ist. HTTP ist sehr einfach. Die CSV wird einfach im Ordner bzw. Unterordner abgelegt, wo auch deine HTML-Seite zu finden ist. Wobei die HTML-Seite nicht zwingend erforderlich ist. Ist nur etwas komfortabler. Und dann, wie Sebastian geschrieben hat als Link auf der HTML-Seite anbieten. Oder direkt im Browser
1 | http://example.com/logfile.csv |
abrufen. Es ist so einfach. HTTP ist der Inhalt egal. Ob es nun HTML, XML, JSON, CSV etc. ist. Aber der Browser schaut aber auf den MIME-Type und das Extention, um was Sinnvolles damit anzufangen. Das wirst Du dann schon merken, wenn Du den Link aufgerufen hast. Dann kannst Du noch mal nachfragen, wenn Du nicht weiterkommst. Einfach machen. Apache rauf und los geht’s. Ja es gibt hunderte andere Möglichkeiten. Pyton als Web-Server etc. Vergiss es erstmal. Keine Lösung suchen, wenn es noch kein Problem gibt. Solange es nur Lokal und nicht im Internet bereitgestellt wird, brauchst Du dir keinen Kopf machen.
Uwe K. schrieb: > Die CSV wird einfach im Ordner bzw. Unterordner > abgelegt, Es wurde nicht erwähnt, ob die Daten überhaupt als CSV vorliegen. Der TO schrieb nur was von Datenlogger und Webserver. Da kann auch eine Datenbank mit im Spiel sein. Aus der Datenbank muss man die Daten dann nur raus bekommen. Ist damit im Grunde aber einfacher als immer eine CSV-Datei zu durchsuchen.
Uwe K. schrieb: > Oder direkt im Browserhttp://example.com/logfile.csv > abrufen. Dann kann es dir aber durchaus passieren das die der Browser das csv einfach direkt im Browser anzeigt. Über einen gesetzten Link mit passendem mime type wird der download "erzwungen" ... Ist also schon die richtige herangehensweise. Und natürlich kann man das a href auch einfach nackt in ein textfile schreiben und das dann .html nennen, einen ordentlichen html body sollte man aber doch wenigstens aussen rum basteln, also doctype etc. Ist ja nun wirklich kein Hexenwerk. Für HTML5 ist das ganze ja nun wirklich easy
1 | <!DOCTYPE html>
|
2 | <html lang="de"> |
3 | <head>
|
4 | <meta charset="utf-8"> |
5 | <title>Titel</title> |
6 | </head>
|
7 | <body>
|
8 | |
9 | </body>
|
10 | </html>
|
Und dabei braucht man das charset nicht mal zwingend.
Dirk B. schrieb: > Es wurde nicht erwähnt, ob die Daten überhaupt als CSV vorliegen. Seh ich anders. Manuel N. schrieb: > Cool wäre es nun, wenn ich die Daten > direkt über den Webserver auf meinen PC runterladen könnte. Also dass > ich die Daten als .csv Datei oder so erhalte. sorry für doppelpost.
Hast du dir schon eine Datenbank ausgesucht? Gibt ein Paket, https://oss.oetiker.ch/rrdtool . Eine Sammlung von Datenbank- und Webserver-Modulen. Ideal für Datenlogger auf einer Linux-Platine. Da findest du unzählige Beispiele, wie du mit diesen Tools CSV zusammen stellst und über Webserver auslieferst.
Manuel N. schrieb: > Ich möchte einen Webserver auf meinem Raspberry Pi aufsetzen. Ziel ist > es, einen Datenlogger zu erstellen und diese Daten dann grafisch auf > meinem Webserver darzustellen. Cool wäre es nun, wenn ich die Daten > direkt über den Webserver auf meinen PC runterladen könnte. Also dass > ich die Daten als .csv Datei oder so erhalte. > > Gibt es dazu irgendwelche Beispiele im Internet oder weiss jemand, wie > ich diese Sache angehen soll? Deine Beschreibung liest sich für mich ein wenig verwirrend. Ich verstehe, dass Dein RasPi Daten sammeln soll, die dann am Ende grafisch visualisiert werden sollen. Die Daten sollen zudem auf einen PC heruntergeladen werden können. Ist das so korrekt? Die übrigen Teile Deiner Ausführungen bleiben mir allerdings verborgen, und genau dort fangen meine Verständnisprobleme an. Daher frage ich einfach mal: 1.) Was genau soll der Webserver auf dem RasPi tun -- soll er nur die vorhandenen Daten zum Download anbieten oder bereits eine Website mit den Visualisierungen der Daten anbieten? 2.) Warum sollen die Daten auf den PC heruntergeladen werden? Möchtest Du sie dort umfangreicher mit einer Software wie Tableau, Grafana, Elasticsearch / Kibana oder meinethalben gnumeric, LibreOffice Calc oder Excel weiter analysieren und / oder visualisieren? Oder dient dieser Download nur Backupzwecken? 3.) Nehme ich richtig an, dass die Daten nicht live vom RasPi zum PC transferiert, sondern auf dem RasPi zwischengespeichert werden sollen? Wenn ja, wie lange sollen sie gepuffert werden, und was sollte dann passieren, wenn der PC die Daten einmal nicht im vorgesehenen Zeitraum herunterladen konnte? 4.) Um welche Datenmengen geht es, also: wieviele Sensoren gibt es (und soll es in Zukunft geben), wie oft werden diese ausgelesen? 5.) Hast Du Dir Gedanken über ein Housekeeping gemacht? Daten verlieren meistens mit zunehmendem Alter an Wert, und bevor Dir die Festplatte Deines RasPi oder Deines PC überlaufen, sollten alte Daten konsolidiert und / oder irgendwann gelöscht werden. Welche Strategie hast Du Dir dafür überlegt? 6.) An welche Art von Visualisierungen hast Du dabei gedacht? Statische oder eher interaktive, einfache oder aufwändige? Hier wurde zwar bereits PHP empfohlen, das Deine Daten sicherlich als CSV-Daten oder auch mit einer passenden Bibliothek wie Flot, JqPlot, JqWidgets oder Ähnlichen in schicken Plots ausliefern kann. Bezüglich der Aufbereitung der Daten, statistischen Analysen, Maschinellem Lernen und datenbasierter Entscheidungsfindung zweifellos viel leistungsfähiger wäre allerdings Python mit seiner Statistikbibliothek Pandas, statischen und dynamischen Visualisierungsbibliotheken wie Matplotlib, Seaborn, Bokeh, Plotly und Plotly Express, und umfangreichen wissenschaftlichen Bibliotheken wie numpy, scipy, und den auf scipy aufbauenden scikits. Diese Werkzeuge erfreuen sich in der professionellen Datenanalyse und -Visualisierung grösster Beliebtheit und lassen keinerlei Wünsche offen -- ausser, dass man sie natürlich erlernen und beherrschen muss, um sie zu benutzen. Selbstverständlich gibt es auch mächtige und performante Webframeworks für Python, genannt seien hier nur das relativ einfache Flask, aber auch sehr mächtige Lösungen wie Django oder Zope. Du siehst: die eigentliche Frage ist, was Du eigentlich machen willst und ob Du dafür womöglich bereit bist, dafür eine Programmiersprache zu erlernen.
Ich A. schrieb: > Uwe K. schrieb: >> Oder direkt im Browserhttp://example.com/logfile.csv >> abrufen. > > Dann kann es dir aber durchaus passieren das die der Browser das csv > einfach direkt im Browser anzeigt. Aber wir sind dann einen großen Schritt weiter. Der Rest ist hühnerkram. Auch den Browser kann man beibringen, wie er mit der Datei umgehen soll. Da gibt es mehrere Möglichkeiten. Ein Schritt nach dem anderen. Explodieren wird es nicht.
Dazu brauchst du nicht mal einen Webserver. Aktiviere ssh , dann kannst du mit Winscp unter Windows oder mit dem Midnight Commander (mc) unter Linux beliebige Dateien downloaden und uploaden. https://www.elektronik-kompendium.de/sites/raspberry-pi/1906281.htm
:
Bearbeitet durch User
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.