Linux: Werte aus dem Web holen und verarbeiten
Dennis_B
- sonstiges
0 Vinzenz Mai0 Der Martin0 Vinzenz Mai0 Dennis_B
Hey @ all,
ich habe da eine sehr sehr nette Idee aber irgendwie finde ich keinen Weg zur Unsetzung.
Nachdem ich nun gemerkt habe wie viele geniale Werkzeuge Linux schon an Board hat und was man damit alles anstellen kann, ist mir eine Idee gekommen.
Ich habe zwar keine Ahnung ob es geht daher frage ich mal hier nach.
Mein Plan, ich möchte die aktuelle Temperatur meines Wohnortes von einer Webseite auslesen (stündlich oder täglich ist einfacher :) "Cronjob").
Dazu lade ich die Webseite mit "wget" herunter und versuche die Webseite (oder Quellcode?) mit Hilfe von awk zu analysieren bzw. das Feld finde wo sich die Temperatur befindet.
Dann soll der Wert an sqlite übergeben werden und in einer Datenbank geschrieben werden.
Dann (z.B der am ende der Woche) übergebe ich die Werte die gesammelt wurden zur Visualisierung an gnuplot weiter.
Am Ende soll ein ein Diagramm enstehen mit Datum und Temperatur der letzten Woche...
Das alles ist nur eine kleine Spinnerei von mir aber ist sowas wirklich irgendwie möglich? Okay.. ich habe schon gemerkt das awk verdammt mächtig ist...
Wie kann man sowas realisieren? Welche Probleme habe ich zu erwarten und gibt es evtl. eine bessere Methode (ausschließlich Linux-Werkzeuge)?
Würde mich sehr über mehrere Lösungwege freuen bzw. sehr gerne wissen wie ihr an sowas rangehen würdet :)
Danke!
Hallo,
Mein Plan, ich möchte die aktuelle Temperatur meines Wohnortes von einer Webseite auslesen (stündlich oder täglich ist einfacher :) "Cronjob").
ja, cronjob ist dafür das richtige Werkzeug.
Dazu lade ich die Webseite mit "wget" herunter
ja, das ist kein besonderes Problem.
und versuche die Webseite (oder Quellcode?) mit Hilfe von awk zu analysieren bzw. das Feld finde wo sich die Temperatur befindet.
awk und ein einziger Wert, Du schießt mit Kanonen auf Spatzen. Ich nähme eher Python, vielleicht täte es sogar 'ne nette Kombination von Basiswerkzeugen :-)
siehe die Gegenüberstellung in diesem Archivbeitrag.
Dann soll der Wert an sqlite übergeben werden
wenn Du einen SQLite-Kommandozeilenclient hast, ist das auch kein Problem.
und in einer Datenbank geschrieben werden.
Du könntest aber auch MySQL oder PostgreSQL nehmen.
Dann (z.B der am ende der Woche) übergebe ich die Werte die gesammelt wurden zur Visualisierung an gnuplot weiter.
ein weiterer Cronjob.
Am Ende soll ein ein Diagramm enstehen mit Datum und Temperatur der letzten Woche...
Das alles ist nur eine kleine Spinnerei von mir aber ist sowas wirklich irgendwie möglich?
Ein Shell-Einzeiler (netto) für das Wochenskript.
Ein wenige-Zeiler für das Tagesskript.
In beiden Fällen ist nicht mal besonders komplizierte Logik erforderlich.
Was hast Du schon versucht, woran bist Du hängengeblieben?
Freundliche Grüße
Vinzenz
Hey,
Mein Plan, ich möchte die aktuelle Temperatur meines Wohnortes von einer Webseite auslesen (stündlich oder täglich ist einfacher :) "Cronjob").
ja, cronjob ist dafür das richtige Werkzeug.
habe ich mir schon fast gedacht ;)
awk und ein einziger Wert, Du schießt mit Kanonen auf Spatzen. Ich nähme eher Python, vielleicht täte es sogar 'ne nette Kombination von Basiswerkzeugen :-)
aber wie? Wie soll ich (ich weiß nicht einmal ob ich den Quelltext oder den Output untersuchen muss) denn an eine Zahl kommen die zwischen hunderten anderen Zeilen/Texten steht?
Dann soll der Wert an sqlite übergeben werden
wenn Du einen SQLite-Kommandozeilenclient hast, ist das auch kein Problem.
ja habe ich, alles konsole!
Du könntest aber auch MySQL oder PostgreSQL nehmen.
Ich wollte keinen Server nutzen sondern alles lokal machen (nur aus "lerntechnischen Gründen")
Ein Shell-Einzeiler (netto) für das Wochenskript.
Ein wenige-Zeiler für das Tagesskript.
Wie jetzt, echt? Hast du ein Beispiel? Habe angst mich in irgendwas voll kompliziertes zu verrennen.... obwohl es etwas viel effektiveres gibt.
In beiden Fällen ist nicht mal besonders komplizierte Logik erforderlich.
Was hast Du schon versucht, woran bist Du hängengeblieben?
Immernoch awk... begreife das nicht mit den Feldern.
Ich verstehe das so:
Zeile 1 = $0
Zeile 2 = $1
würde ich jetzt das dritte wort aus $1 nehmen wollen müsste ich es irgendwie ansprechen, in etwa "nimm von $0 $3" aber das ist falsch... oder?
lg
Dennis
Hallo Dennis,
ich konzentriere mich einfach auf ein erstes Problem:
Wie lese ich die Temperatur aus?
awk und ein einziger Wert, Du schießt mit Kanonen auf Spatzen. Ich nähme eher Python, vielleicht täte es sogar 'ne nette Kombination von Basiswerkzeugen :-)
aber wie? Wie soll ich (ich weiß nicht einmal ob ich den Quelltext oder den Output untersuchen muss)
was wget herunterlädt, ist zunächst mal das, was der Server antwortet :-)
Du wirst kein Javascript ausführen wollen, also helfen Dir nur HTML-Seiten, in denen die Temperatur im Klartext steht.
denn an eine Zahl kommen die zwischen hunderten anderen Zeilen/Texten steht?
Du musst den Quelltext der HTML-Seite, die Du auswertest, schon selbst analysieren und Du solltest bedenken, dass der Anbieter der Seite die Ausgabe ändern kann, ohne Dich darüber zu informieren :-)
Nehmen wir zum Beispiel an, im Quellcode sähe es wie folgt aus:
Temperatur: 21.1 °C<br />
Taupunkt: 18.9 °C<br />
Gefühlte Temperatur: 21.1 °C<br />
und sonst käme nirgendwo im Quelltext die Zeichenkombination
Temperatur: <wert>
vor, so könntest Du die Ausgabe von wget mit Hilfe der Option
wget -O - [und sonstiger Kram], siehe man wget, Download-Options, d.h.
-O <file>
--output-file=<file>
Ich zitiere:
<zitat>
If ‘-’ is used as file, documents will be printed to standard output,
disabling link conversion. (Use ‘./-’ to print to a file literally
named ‘-’.)
</zitat>
an die Standardausgabe leiten, das wiederum durch grep schicken, so wie ich es im verlinkten Beispiel mit ifconfig getan habe, davon nur die erste Zeile betrachten (das ginge ähnlich wie von mir in diesem Archivbeitrag für die letzte Zeile beschrieben), trenne diese Zeile am Doppelpunkt, nehme den zweiten Abschnitt, trenne am Leerzeichen und nähme den Abschnitt, der die Zahl enthält, d.h. noch ein paar cut-Operationen, fertig.
Hört sich jetzt vielleicht kompliziert an, aber Du kannst das Schritt für Schritt aufbauen, so wie ich dies in den verlinkten Beitragen (bzw. im im verlinkten Beitrag verlinkten Beitrag) aufgedröselt habe.
Freundliche Grüße
Vinzenz
Hey,
habe endlich einen kleinen Fortschritt gemacht.
Habe eine Webseite gefunden die den Wert in Klartext ausgibt aber erstes Problem.
Die Zeile wo der Quelltext und der gesuchte Wert steht ist nicht einzigartig:
<td width=50>22.3</td>
Das Tabellenobjekt td kommt mit dem width-Wert öfters im Quelltext vor daher kann ich damit nichts anfangen denke ich mal.
Aber eine Zeile davor ist einzigartig:
<td width=44% align=left><strong> Temperatur</strong> (°C) </td>
Die kann ich ganz speziell mit:
cat 49X2499.html | grep Temperatur\<\/st
herausfiltern. Soweit so gut, also weiß ich nun das die darauf folgende Zeile die gesuchte ist... aber wie komme ich da nun ran?
Wenn ich die nächste Zeile irgendwie schnappen könnte wäre echt schon was geschaft denn mit:
cat 49X2499.html | grep 22.3 | cut -d \> -f 2 | cut -d \< -f 1
kann ich die Temperatur sehr gut isolieren :)
Hat da jemand eine Idee wie ich an die nächste Zeile springen kann? Leider kann ich die nicht herausfiltern da keinesfalls einzigartig :(
Hallo Dennis,
<td width=44% align=left><strong> Temperatur</strong> (°C) </td>
damit ist also die Stelle eindeutig bestimmt?
also weiß ich nun das die darauf folgende Zeile die gesuchte ist...
Die folgende Zeile? Oder einfach die folgende Zelle, sprich, das folgende td-Element? Denn dann müsstest du ja "nur" von der oben dargestellten gefundenen Stelle aus weitersuchen bis zum nächsten "<td.+>", und danach folgt der gesuchte Zahlenwert - oder?
Zumindest aber sollte es möglich sein, von der gefundenen Stelle aus durch Abzählen der folgenden Tags den Wert zu finden. Und wehe, der Anbieter ändert das Format irgendwann ...
Ich gehe dabei aber immer davon aus, dass man die Datei einfach linear durchsucht. Zur Not mit einem kleinen Perl- oder PHP-Script (PHP-CLI, Kommandozeile).
So long,
Martin
Hallo Martin - oder soll ich mal wieder "Der" schreiben,
Zumindest aber sollte es möglich sein, von der gefundenen Stelle aus durch Abzählen der folgenden Tags den Wert zu finden. Und wehe, der Anbieter ändert das Format irgendwann ...
das Problem hat man immer, wenn man fremde Webseiten ausliest und auswertet.
Einen Webservice zu nutzen, wäre viel sicherer.
Selbst gestellte Ideen sind meiner Meinung nach die besten Lernprojekte - und da störte mich die fehlende Robustheit nicht besonders.
Ich gehe dabei aber immer davon aus, dass man die Datei einfach linear durchsucht. Zur Not mit einem kleinen Perl- oder PHP-Script (PHP-CLI, Kommandozeile).
grep und tail reichen aus, um anschließend (wie Dennis bereits herausgefunden hat) die Temperatur zu ermitteln. Den HTML-Quelltext statt über cat per wget -O - holen, dürfte nicht zu schwierig sein, sollte man in der Entwicklungsphase tunlichst vermeiden.
Ganz sicher wird man im Dauerbetrieb in den Access-Logs auffallen und sollte - auch bei einer rein privaten lokalen Anwendung - besser vorher mit dem Webseitenanbieter sprechen als hinterher böse auf die Nase zu fallen.
Freundliche Grüße
Vinzenz
Hallo Vinzenz,
oder soll ich mal wieder "Der" schreiben
wenn du magst; das letzte Beispiel war zwar ultraflach, aber es stört mich nicht.
Selbst gestellte Ideen sind meiner Meinung nach die besten Lernprojekte - und da störte mich die fehlende Robustheit nicht besonders.
Da sind wir vollkommen einer Meinung.
Ich gehe dabei aber immer davon aus, dass man die Datei einfach linear durchsucht. Zur Not mit einem kleinen Perl- oder PHP-Script (PHP-CLI, Kommandozeile).
grep und tail reichen aus, um anschließend (wie Dennis bereits herausgefunden hat) die Temperatur zu ermitteln.
Ja, es ist eine Frage der Philosophie.
Man kann nach der Unix-Philosophie gehen und sich fragen: Wie kann ich mein Ziel mit den gegebenen Werkzeugen erreichen?
Ich bevorzuge aber die Heimwerkermethode: Nehmen wir Programmiererfahrung und eine vorhandene Scriptsprache (oder auch eine compilierte Sprache) als gegeben an und versuchen wir, ein auf die Aufgabe maßgeschneidertes Script zu erstellen.
Ganz sicher wird man im Dauerbetrieb in den Access-Logs auffallen und sollte - auch bei einer rein privaten lokalen Anwendung - besser vorher mit dem Webseitenanbieter sprechen als hinterher böse auf die Nase zu fallen.
Guter Hinweis! Wobei das mit dem Auffallen natürlich sehr von der Häufigkeit abhängt. Fragt man eine Information im Minutentakt ab, ist die Wahrscheinlichkeit des Auffallens sicher hoch; stellt man die Anfrage aber nur alle zwei, drei Stunden, wird das vermutlich lange Zeit niemand bemerken.
Und selbst wenn man auffällt: Man sendet eine HTTP-Anfrage und erhält eine Antwort. Das ist genau das, wofür ein Webserver da ist, und es erzeugt keine übermäßige Last für den Server. Sollte also niemanden wirklich stören.
Ein paar klärende Worte vorab sind natürlich dennoch nie falsch.
So long,
Martin
Hallo Vinzenz, hallo Martin,
Ganz sicher wird man im Dauerbetrieb in den Access-Logs auffallen und sollte - auch bei einer rein privaten lokalen Anwendung - besser vorher mit dem Webseitenanbieter sprechen als hinterher böse auf die Nase zu fallen.
oho, okay darüber habe ich nicht nachgedacht. Was könnte mir der Betreiber denn -wenn es dazu kommen sollte gerade am Anfang wo ich viele anfragen zum testen sende- vorwerfen?
Lg
Dennis
Hallo Dennis,
Ganz sicher wird man im Dauerbetrieb in den Access-Logs auffallen und sollte - auch bei einer rein privaten lokalen Anwendung - besser vorher mit dem Webseitenanbieter sprechen als hinterher böse auf die Nase zu fallen.
oho, okay darüber habe ich nicht nachgedacht. Was könnte mir der Betreiber denn -wenn es dazu kommen sollte gerade am Anfang wo ich viele anfragen zum testen sende- vorwerfen?
weiß ich nicht, ich bin kein Rechtsexperte.
Zum Testen:
a) vor Einsatz von wget:
cat <lokale Datei> | ...
wie Du es anscheinend machst.
b) zum Einsatz von wget:
lokalen Webserver nutzen (hast Du unter Deinem Debian bestimmt installiert).
Dazu im Shellskript eine Variable nutzen, um bequem umschalten zu können, in etwa so:
URI=http://localhost/path/to/test/resource
Freundliche Grüße
Vinzenz
Hallo Dennis,
Die Zeile wo der Quelltext und der gesuchte Wert steht ist nicht einzigartig:
<td width=50>22.3</td>
Das Tabellenobjekt td kommt mit dem width-Wert öfters im Quelltext vor daher kann ich damit nichts anfangen denke ich mal.
Aber eine Zeile davor ist einzigartig:
<td width=44% align=left><strong> Temperatur</strong> (°C) </td>
Die kann ich ganz speziell mit:
cat 49X2499.html | grep Temperatur\<\/st
herausfiltern. Soweit so gut, also weiß ich nun das die darauf folgende Zeile die gesuchte ist... aber wie komme ich da nun ran?
das ist doch schon was. Und Du kommst da dran.
Wenn ich die nächste Zeile irgendwie schnappen könnte wäre echt schon was geschaft denn mit:
cat 49X2499.html | grep 22.3 | cut -d > -f 2 | cut -d < -f 1
> kann ich die Temperatur sehr gut isolieren :)
Die GNU-Variante von grep kann wunderbar mit dem Kontext gefundener Zeilen umgehen, für Dich ist die Option
-A NUM
--after-context=NUM
interessant, siehe man grep
cat 49X2499.html | grep -A 1 Temperatur\<\/st
liefert Dir
<td width=44% align=left><strong> Temperatur</strong> (°C) </td>
<td width=50>22.3</td>
als Ausgabe. Du brauchst nur die letzte Zeile.
Deswegen schickst Du das ganze durch tail und lässt Dir mit dessen Option -n 1 nur die letzte Zeile ausfiltern, siehe man tail:
cat 49X2499.html | grep -A 1 Temperatur\<\/st | tail -n 1
Wie Du daraus die Temperatur ermittelst hast Du ja schon geschrieben:
# Backslash am Ende einer Zeile maskiert das Zeilenendezeichen und sorgt somit
# für die Fortsetzung des Kommandos auf der nächsten Zeile
$cat 49X2499.html \
| grep -A 1 Temperatur\<\/st \
| tail -n 1
| cut -d \> -f 2 \
| cut -d \> -f 1
22\.3
Das geht gut voran. Weiter so!
Freundliche Grüße
Vinzenz
Hallo Gunnar™,
schreibe nie ab, wenn Du kopieren kannst:
Wie Du daraus die Temperatur ermittelst hast Du ja schon geschrieben:
$cat 49X2499.html \
| grep -A 1 Temperatur</st \
| tail -n 1
| cut -d > -f 2 \
| cut -d < -f 1
22.3
Fehler bei letzter cut-Anweisung korrigiert.
Freundliche Grüße
Vinzenz
Hallo Vinzenz,
Die GNU-Variante von grep kann wunderbar mit dem Kontext gefundener Zeilen umgehen, für Dich ist die Option
-A NUM
--after-context=NUM
super! Genau sowas meinte ich :)
als Ausgabe. Du brauchst nur die letzte Zeile.
Deswegen schickst Du das ganze durch tail und lässt Dir mit dessen Option -n 1 nur die letzte Zeile ausfiltern, siehe man tail:cat 49X2499.html | grep -A 1 Temperatur</st | tail -n 1
Absolut genial, simple aber ich wäre nie darauf gekommen obwohl ich tail schon ein paar mal genutzt habe (nur zum Experimentieren).
Backslash am Ende einer Zeile maskiert das Zeilenendezeichen und sorgt somit
für die Fortsetzung des Kommandos auf der nächsten Zeile
Wieder was gelernt, das kannte ich auch nicht, habe immer alles in einer
Zeile geschrieben was irgendwann doch sehr schwer zu überschauen war :)
Das geht gut voran. Weiter so!
Danke dir!
Lg
Dennis
Moin!
Zeile 1 = $0
Zeile 2 = $1würde ich jetzt das dritte wort aus $1 nehmen wollen müsste ich es irgendwie ansprechen, in etwa "nimm von $0 $3" aber das ist falsch... oder?
AWK arbeitet zeilenweise.
Also alles was
BEGIN {
hier steht wird vor der zeilenweisen Abarbeitung ausgeführt.
}
{
hier steht wird für jede Zeile ausgeführt.
}
END {
hier steht wird nach der zeilenweisen Abarbeitung ausgeführt.
}
In den Zeilen selbst wird dann je nach Trenner in "Wörter" zerlegt. Diese sind dann $1, $2...
Für Deine Aufgabe halte ich aber sed für geeigneter:
echo "<p>Temperatur: 3°C Pla Blub</p>" | sed s/.*Temperatur://1 | sed s/°C.*//
Das haut die ganze Webseite in einem Rutsch weg....
MFFG (Mit freundlich- friedfertigem Grinsen)
fastix
»» awk und ein einziger Wert, Du schießt mit Kanonen auf Spatzen. Ich nähme eher Python, vielleicht täte es sogar 'ne nette Kombination von Basiswerkzeugen :-)
Python hat nicht jeder!
awk, grep, sort, tail, rew, sed alles Zeugs was ein "normales" Linux an Bord hat. Das ganz mit einer bash von cron aufgerufen. und gut ist.
Da muss man nicht erst noch lange diskutieren was "einfacher" ist. Einfach ist das was der Threadstarter "kann".
oder sollte man vielleicht noch die Rechnerlast beruecksichtigen??
BTW: awk ist ein Basiswerkzeug, nur ist due Bedienung machmal etwas ungewohnt ;-)
bis dann
Ulli
Hallo Ulli,
»» awk und ein einziger Wert, Du schießt mit Kanonen auf Spatzen. Ich nähme eher Python, vielleicht täte es sogar 'ne nette Kombination von Basiswerkzeugen :-)
Python hat nicht jeder!
awk, grep, sort, tail, rew, sed alles Zeugs was ein "normales" Linux an Bord hat. Das ganz mit einer bash von cron aufgerufen. und gut ist.
ich glaube, Du hast missverstanden, was ich vermitteln wollte:
Selbstverständlich passt es zur UNIX/Linuxphilosophie, die vorhandene Werkzeugpalette durch selbsterstelltes Werkzeug zu ergänzen. Dazu kann man die Programmier/Skriptsprache der eigenen Wahl verwenden. *Ich* verwendete in einem solchen Fall Python, weil es auf heutigen Systemen von extrem seltenen Ausnahmen stets vorhanden ist und ich diese Sprache mag.
Da muss man nicht erst noch lange diskutieren was "einfacher" ist. Einfach ist das was der Threadstarter "kann".
BTW: awk ist ein Basiswerkzeug, nur ist due Bedienung machmal etwas ungewohnt ;-)
Eben. Ich hoffe, dass der OP sein selbst gestelltes Projekt schnell umsetzen und daraus Motivation für weitere Aufgaben und weiteres Lernen schöpfen kann. Für *mich* ist die *meiner Meinung nach* extrem steile Lernkurve für die Verwendung von Werkzeugen wie sed und awk dafür kontraproduktiv.
oder sollte man vielleicht noch die Rechnerlast beruecksichtigen??
Die sollte kein Thema sein :-) Ein einzelnes privates Projekt auf dem eigenen Rechner zu Hause. Ein Skript, das maximal einmal pro Minute aufgerufen wird und nicht besonders viel Aufwand verursacht.
Freundliche Grüße
Vinzenz
Hallo Vinzenz,
[...]
ich glaube, Du hast missverstanden, was ich vermitteln wollte:
Ach so...
Okay!
bis dann
Ulli
Hallo,
Mein Plan, ich möchte die aktuelle Temperatur meines Wohnortes von einer Webseite auslesen (stündlich oder täglich ist einfacher :) "Cronjob").
ich verstehe die Herausforderung als solche - aber wenn's um den reinen Zweck geht, wäre es doch wesentlich einfacher und aussagekräftiger, einen Thermosensor mit einer wie auch immer gearteten Schnittstelle (RS232, USB, I2C, KTY10 mit A/D-Wandler, DS1820 mit "1-Wire") zu nehmen und den außen vor dem Fenster zu montieren. So bist du nicht von externen Angeboten abhängig und hast wirklich die Temperatur an deinem Wohnort, nicht die der nächstgelegenen Wetterstation (die gut und gerne mal 50km weg sein kann).
Am Ende soll ein ein Diagramm enstehen mit Datum und Temperatur der letzten Woche...
Ich würde zwei Ergebnisse erzeugen:
a) Temperaturverlauf über die letzten 24 Stunden im Stundentakt (Tagesverlauf)
b) Temperaturverlauf über die letzten n Tage, jeweils Tageshöchst- und Tiefstwerte, n wählbar
Würde mich sehr über mehrere Lösungwege freuen bzw. sehr gerne wissen wie ihr an sowas rangehen würdet :)
Ich bin unfair - ich habe hier eine kleine Wetterstation mit Innen- und Außensensor und RS232-Schnittstelle, und brauche bloß alle paar Minuten die aktuellen Daten abzufragen und in die Datenbank einzukippen. Damit erübrigt sich für mich der Umstand, die Informationen aus einer Internet-Quelle zu extrahieren.
Diese Software, die das tun soll, ist aber auch noch im Rohbau ...
So long,
Martin
Hallo Martin,
Ich würde zwei Ergebnisse erzeugen:
a) Temperaturverlauf über die letzten 24 Stunden im Stundentakt (Tagesverlauf)
b) Temperaturverlauf über die letzten n Tage, jeweils Tageshöchst- und Tiefstwerte, n wählbar
sinnvolle Anforderungen, könnte per Kommandozeilenparameter gesteuert werden.
Würde mich sehr über mehrere Lösungwege freuen bzw. sehr gerne wissen wie ihr an sowas rangehen würdet :)
Die Auswertung (Teil 2 - und für mich ein eigenständiges Programm) sollte unabhängig davon nutzbar sein, wie die Daten in die Datenbank kommen - ob aus der eigenen Wetterstation oder durch Einlesen der Daten durch Auslesen bestimmter Webseiten.
Freundliche Grüße
Vinzenz
Hallo Vinzenz,
Ich würde zwei Ergebnisse erzeugen:
a) Temperaturverlauf über die letzten 24 Stunden im Stundentakt (Tagesverlauf)
b) Temperaturverlauf über die letzten n Tage, jeweils Tageshöchst- und Tiefstwerte, n wählbar
sinnvolle Anforderungen, könnte per Kommandozeilenparameter gesteuert werden.
als Kommandozeilen-Parameter, als URL-Parameter, in einer Konfigurationsdatei oder über ein GUI, je nachdem, wie die Ergebnisse abgerufen werden - als textbasierte Tabelle auf der Kommandozeile oder über HTTP, grafisch über HTTP, grafisch über einen eigens dafür gemachten Client.
Die Auswertung (Teil 2 - und für mich ein eigenständiges Programm) sollte unabhängig davon nutzbar sein, wie die Daten in die Datenbank kommen - ob aus der eigenen Wetterstation oder durch Einlesen der Daten durch Auslesen bestimmter Webseiten.
Ja, das würde ich auch so sehen. Das Design, das ich verfolge, trennt auch die Beschaffung der Daten von ihrer Auswertung und Darstellung. Ich könnte also aus beliebigen Quellen weitere Temperaturen, Luftfeuchtigkeiten oder beliebige andere Daten einbringen.
Das gleiche Grundmodell habe ich bei meinem Ex-Arbeitgeber schon mal realisiert, als es darum ging, elektronische Baugruppen während bestimmter Prüfungen zu überwachen: Ein frei konfigurierbares System, das aus beliebigen Quellen Daten sammelt, speichert, nach benutzerdefinierten Kriterien überprüft und als Wertetabelle oder als Grafik anzeigt. Dort war vor allem die zeitliche Auflösung bei der Acquisition eine harte Nuss: Das System sollte Zeiten bis runter auf 50ms auflösen können. Die Grenze war meist durch die Windows-Treiber der Datenerfassungssysteme gegeben ...
So long,
Martin
Hey Martin :)
Ich würde zwei Ergebnisse erzeugen:
a) Temperaturverlauf über die letzten 24 Stunden im Stundentakt (Tagesverlauf)
b) Temperaturverlauf über die letzten n Tage, jeweils Tageshöchst- und Tiefstwerte, n wählbar
okay... vielleicht in der Zukunft... nur einen wert am tag würde mich schon freuen :)
Ich bin unfair - ich habe hier eine kleine Wetterstation mit Innen- und Außensensor und RS232-Schnittstelle, und brauche bloß alle paar Minuten die aktuellen Daten abzufragen und in die Datenbank einzukippen. Damit erübrigt sich für mich der Umstand, die Informationen aus einer Internet-Quelle zu extrahieren.
Diese Software, die das tun soll, ist aber auch noch im Rohbau ...
hehehehe... sehr geil :) das finde ich sehr gut :) aber es ist bei mir nur ein versuch externe quellen für mich zu nutzen ohne selbst Geld in Hardware investieren zu müssen :)
Achso, meine nächste Wetterstation liegt ca. 1500 Meter auf dem Fliegerhorst :)