Raspberry Pi, Daten über Webserver downloaden

#7103027
Lesenswert?

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
#7103091
Lesenswert?

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?
#7103095
Lesenswert?

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.
#7103185
Lesenswert?

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.
#7103200
Lesenswert?

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.
Gast #7103305
Lesenswert?

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.
Gast #7103399
Lesenswert?

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.
#7103616
Lesenswert?

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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren