• Willkommen im Forum „Wetterstationsforum.info - Archiv“.
 

Neuigkeiten:

Dieses Forum dient ausschließlich zu Archivzwecken.
Für Fragen nutze bitte unser aktuelles Forum, welches du unter https://wetterstationsforum.info findest.

Hauptmenü

WsWin to mySQL

Begonnen von Wetterwarte, 31.08.2008, 13:19:37

⏪ vorheriges - nächstes ⏩

Wetterwarte

Hallo,

damit das Thema übersichtlich bleibt und wie gewünscht, mache ich zu WsWin to mySQL einen neuen Beitrag auf.

WsWin to mySQL dient dazu, Daten direkt aus der automatisch generierten Datei ws_newdata.csv auszulesen und in eine mySQL Datenbank einzulesen. Darüber hinaus können zusätzlich Maxima, Minima und Mittelwerte für die Zeitbereiche Stunde, Tag, Monat und Jahr berechnet werden. Das Script läuft mit Hilfe eines Cronjobs völlig automatisch.

Nähere Informationen gibt es auf folgender Seite inkl. Download:

http://www.meteo-dynamics.de

_______________________________________

Die erste Frage dazu war:

Zitat von: "Sprite01"Hallo Thomas,

ich beschäftige mich gerade mit deinem WsWin to MySQL.
Wie meinst du das ?
Zitat– Zeile 3: Angabe des Dateipfades zu der PHP Datei mit den mySQL Verbindungsdaten.
zur Zeit steht:
Zitatinclude 'dbconfig.php';
bei mir in Zeile 3

Am besten einen neuen Thread aufmachen ? Da kommt sicherlich noch mehr.

Zur Frage:

Je nach dem, wie du eine Verbindung zur Datenbank aufbaust, eignet sich die Möglichkeit, die Verbindungsdaten direkt ins Script zu schreiben oder eine separate Datei zu nutzen.

So sieht die extra Datei ca. aus:



// config.php

define('MYSQL_HOST', 'localhost');
define('MYSQL_USER', 'root');
define('MYSQL_PASS', 'passwort');
define('MYSQL_DABA', 'database');

Gruß Thomas

Wetterstation Emden:
wetter-ostfriesland.de

Wettermessnetz Niedersachsen und Bremen: Neuwetter.de

Sprite01

Wenn ich meine csv mit Excel öffne sieht sie allerdings so aus:
Gruß aus Dessau (Stadt Dessau-Roßlau)
Dirk
http://www.regionalwetter-sa.de
http://www.dessauwetter.de


Holli

Ja, Excel ist tatsächlich zu blöd, eine syntaktisch korrekte CSV richtig zu öffnen. So unglaublich es klingt, aber es ist so.

Man kann es nur dazu zwingen, die Spalten richtig einzulesen, wenn man die Datei in *.txt umbenennt und die Trenner und Spaltenformate manuell angibt. Aber selbst dabei kann es passieren, daß es die Inhalte einer Spalte einem falschen Format zuordnet, die Inhalte unbrauchbar verstümmelt und sich mit keinem Trick davon abbringen lassen will.
Dietmar

Eine Aussage, die durch ein Ausrufezeichen bekräftigt werden muß, ist zumindest zweifelhaft.
Eine Aussage, die durch mehrere Ausrufezeichen bekräftigt wird, ist definitiv falsch.
Der aktuelle Deppensport: Wir töten ein Akkusativ.

Wetterwarte

@Dirk

Das ist kein Problem. Die Tabelle im Manual ist nur schon formatiert. Das ist hier aber nicht wichtig.

In einer Schleife wird immer eine Zeile Text, also die Werte eingelesen. Die Kommata werden als Erkennungszeichen genutzt, der komplette String wird daran aufgesplittet und alle gefundenen Textzeilen in ein Array abgelegt. Mit den Keys holst du dann die einzelnen Werte aus dem Array raus. Wichtig ist nur zu wissen, an welcher Stelle der Wert im Array liegt.

Der erste eingelesene Wert ist in deinem Fall das Datum. Ein Array zählt ab 0 aufwärts. Daher vergibst du im aktuelldatenskript in der Zeile für das Datum die Zahl 0.

$datum = $datenarray[0];

Das ist aber schon so voreingestellt. Dann guckst du weiter, welcher Wert nach dem nächsten Komma kommt. Das ist Zeit.

$uhrzeit = $datenarray[1];

Nach dem nächsten Komma kommt Temp I. Die Innentemperatur ist im Skript nicht vorgesehen, kann aber nachgerüstet werden. Dafür in der mySQL Tabelle eine weitere Spalte hinzufügen, die SQL Anweisung unten anpassen und eine neue Variable nach dem selben Muster erstellen. Die dort eingetragenen Sensoren sind nur ein Beispiel. Nach dem Muster ist es so möglich, beliebig viele Sensoren aus der CSV-Datei auszulesen.

Und immer so weiterzählen. Wenn du also die Kommata durchzählst, würde z.b. Wind die Zahl 8 bekommen.

$Windgeschwindigkeit = $datenarray[8];
Gruß Thomas

Wetterstation Emden:
wetter-ostfriesland.de

Wettermessnetz Niedersachsen und Bremen: Neuwetter.de

Wettermichel

Hallo,

Zitat von: "Holli"Ja, Excel ist tatsächlich zu blöd, eine syntaktisch korrekte CSV richtig zu öffnen. So unglaublich es klingt, aber es ist so.

Man kann es nur dazu zwingen, die Spalten richtig einzulesen, wenn man die Datei in *.txt umbenennt und die Trenner und Spaltenformate manuell angibt. Aber selbst dabei kann es passieren, daß es die Inhalte einer Spalte einem falschen Format zuordnet, die Inhalte unbrauchbar verstümmelt und sich mit keinem Trick davon abbringen lassen will.

naja das ist auch eine Art sein eigenes unvermögen ein Programm richtig zu bedienen zum Ausdruck zu bringen.

Mein Excel kann das ohne Probleme, Du mußt nur die Importfunktionen(siehe auch Textdateien  unter Datei öffnen) von Excel richtig einsetzten und schon geht's.

Und das manchmal beim Import Müll rauskommt liegt an den länderspezifischen Einstellungen, aber das weißt Du doch sicherlich alles.;-)

@ Wetterwarte

Danke für deine Scripte funktionieren ohne Probleme.:top:
Nutze Sie derzeit für interne Zwecke.

Gruß

Michael

Sprite01

Zitat von: "Wettermichel"Danke für deine Scripte funktionieren ohne Probleme.:top:

Wohl dem, der es kann. Aber so lernt man ja (mit Hilfe) am besten ...  :-)

Bei mir kommt zur Zeit das:
ZitatNotice: Use of undefined constant d008080a - assumed 'd008080a' in /www/htdocs/XXXXXX/wswintomysql/wetterdatensteuerskript.php on line 7
Transmission erfolgreich --Aktuelldaten-- Query:

INSERT INTO `data_aktuellwerte` ( `id` , `Datetime` , `Datum` , `Datummetric` , `Stunde` , `Tag` , `Monat` ,
    `Jahr` , `Uhrzeit` , `Temp` , `Temp_Boden` , `Feuchte`, `Luftdruck` , `Regenmenge` ,
    `Windgeschwindigkeit` , `Windrichtung` , `Taupunkt` , `Windchill`)

      VALUES (NULL ,'2008-08-31 15:54' , '2008-08-31', '31.08.2008' , '15' , '31', '08', '2008', '15:54',
               '27.0', '27.0', '27.3' , '33.5' , '34' , '29' , '13' ,
            '1009.0' , '0.000');

Antwort: Unknown column 'Datetime' in 'where clause'

Die Werte muss ich noch ein wenig anpassen, aber was bedeuten die Meldungen ?

Sorry, aber bei php und mysql bin ich Beginner.  :oops:

Edit: Die 1. Meldung habe ich durch einfügen von ' und ' weg.  8-)
Gruß aus Dessau (Stadt Dessau-Roßlau)
Dirk
http://www.regionalwetter-sa.de
http://www.dessauwetter.de


Holli

Zitat von: "Wettermichel"naja das ist auch eine Art sein eigenes unvermögen ein Programm richtig zu bedienen zum Ausdruck zu bringen.
Das "Unvermögen" besteht darin, daß sich MS Office bei der Installation ungefragt Dateien mit der Endung .csv krallt, aber dann nicht in der Lage ist, dieses Format korrekt zu behandeln.

Einen Doppelklick auf eine Datei kannst du nicht wirklich als "unvermögen ein Programm richtig zu bedienen" bezeichnen. Ich habe diesem Müllhaufen weder vorgeschrieben noch erlaubt, dieses Dateiformat grundsätzlich zu öffnen. Wenn die Programmierer ihre Software schon für so fähig halten, daß sie das ohne Probleme kann, und deshalb eine Rückfrage beim User für überflüssig halten, sollte das auch tasächlich so sein. Ist es aber nicht.
ZitatMein Excel kann das ohne Probleme, Du mußt nur die Importfunktionen(siehe auch Textdateien  unter Datei öffnen) von Excel richtig einsetzten und schon geht's.
Nö, geht nicht. Derselbe Mist: Alle Felder einer Zeile in einer Zelle, Feldtrenner komplett ignoriert. Der Umweg über Ändern der Extension und komplett manuelle Einstellung der Importparameter (die natürlich bei jedem Import dieselben schwachsinnigen und sicher nie benötigten Voreinstellungen haben) ist der einzige Weg, eine .csv nutzbar in Excel 2003 zu importieren.

Ein , als Feldtrenner in einer Datei zu ignorieren, die als Typ "Comma separated values" hat, findest du keinen Bug?

Das liegt vermutlich an deinem Unvermögen, meine Fähigkeiten auch nur annähernd richtig einschätzen zu können.
Dietmar

Eine Aussage, die durch ein Ausrufezeichen bekräftigt werden muß, ist zumindest zweifelhaft.
Eine Aussage, die durch mehrere Ausrufezeichen bekräftigt wird, ist definitiv falsch.
Der aktuelle Deppensport: Wir töten ein Akkusativ.

Trix

Hi

ZitatNö, geht nicht. Derselbe Mist: Alle Felder einer Zeile in einer Zelle, Feldtrenner komplett ignoriert. Der Umweg über Ändern der Extension und komplett manuelle Einstellung der Importparameter (die natürlich bei jedem Import dieselben schwachsinnigen und sicher nie benötigten Voreinstellungen haben) ist der einzige Weg, eine .csv nutzbar in Excel 2003 zu importieren.

Ich finde das von Excel auch einen blöden Zug. Wenn es meint, daß der Seperator ja eigentlich das Dezimaltrennzeichen ist und nicht wirklich weis was es tun soll dann soll es doch fragen und es sich merken.

Ansonsten einfach Regional- und Spracheinstellungen von Windows auf Englich stellen und alles geht wie von alleine.  :top: (der zweite Weg)

Gruß Trix
WS2000 Sensoren, ELV Testempfänger,WS444PC, KS555, WSWin auf Futro S400 und viel VB6

(ohne VB6 hätte die Welt lauter Ecken und Kanten, mit ist sie schön rund)

Wettermichel

Zitat von: "Holli"Das "Unvermögen" besteht darin, daß sich MS Office bei der Installation ungefragt Dateien mit der Endung .csv krallt, aber dann nicht in der Lage ist, dieses Format korrekt zu behandeln.

Einen Doppelklick auf eine Datei kannst du nicht wirklich als "unvermögen ein Programm richtig zu bedienen" bezeichnen. Ich habe diesem Müllhaufen weder vorgeschrieben noch erlaubt, dieses Dateiformat grundsätzlich zu öffnen. Wenn die Programmierer ihre Software schon für so fähig halten, daß sie das ohne Probleme kann, und deshalb eine Rückfrage beim User für überflüssig halten, sollte das auch tasächlich so sein. Ist es aber nicht.

Stimmt, das könnte man erwarten, der Pendant macht es hier besser.

ZitatEin , als Feldtrenner in einer Datei zu ignorieren, die als Typ "Comma separated values" hat, findest du keinen Bug?

Was aber nur für den Doppelklick gilt.

Unter Datei "öffnen" als Dateityp "Textdatei" ausgewählt öffnet Excel 2000 alle *.csv Dateien so wie es sein soll, alles schön getrennt.

ZitatDer Umweg über Ändern der Extension und komplett manuelle Einstellung der Importparameter (die natürlich bei jedem Import dieselben schwachsinnigen und sicher nie benötigten Voreinstellungen haben) ist der einzige Weg, eine .csv nutzbar in Excel 2003 zu importieren.

Die Extension brauchst Du nicht zu ändern, Du mußt nur  statt Textdatei alle Datein auswählen und kannst dann auch *.csv Dateien mit dem Importassistenten importieren.

Und das die Einstellungen natürlich bei jeder neu zu importierenden Datei neu einzustellen sind hat sicherlich auch seine Berechtigung.
Natürlich könnte das auch verbessert werden wie viele andere Dinge auch.

ZitatDas liegt vermutlich an deinem Unvermögen, meine Fähigkeiten auch nur annähernd richtig einschätzen zu können.

Ich habe das wie oben schon geschrieben nur auf Excel bezogen.

Wenn ich deine Ausführungen Lese wie Du dir scheinbar einen abbrichst was das Einlesen/Importieren einer einfachen *.csv Datei in Excel betrifft........ naja lassen wir das.

Natürlich könnte man von MS Office mehr erwarten, da gebe ich Dir Recht zumal das Programm auch einen schönen Happen kostet.

Aber so dramtisch wie Du hier schreibst ist es bei weitem nicht.
Das der eine oder andere damit Probleme hat ist ja auch klar, aber das ist mit vielen anderen Programmen ebenso.

Gruß

Michael

Holli

Zitat von: "Trix"Wenn es meint, daß der Seperator ja eigentlich das Dezimaltrennzeichen ist
Anzunehmen, daß das Komma in einer CSV-Datei der Dezimaltrenner ist, ist schon ziemlich hirnverbrannt. Das kann er nach der Definition nur dann sein, wenn er innerhalb von " steht. Aber Definitionen von Standards (auch wenn sie älter sind als die Firma MS) haben MS ja noch nie sonderlich interessiert.

ZitatAnsonsten einfach Regional- und Spracheinstellungen von Windows auf Englich stellen und alles geht wie von alleine.  (der zweite Weg)
Um einen Bug in MS Office zu umkurven? Im Leben nicht. Es gibt einen viel einfacheren Weg: Open Office benutzen.
Dietmar

Eine Aussage, die durch ein Ausrufezeichen bekräftigt werden muß, ist zumindest zweifelhaft.
Eine Aussage, die durch mehrere Ausrufezeichen bekräftigt wird, ist definitiv falsch.
Der aktuelle Deppensport: Wir töten ein Akkusativ.