Stefan C. Pachlina

ITler, Hobby-Fotograf und Koch, Autor, Handwerker, Gärtner, Bastler, Krimiliebhaber, Brettspieler, Retrogamer, Wanderer und Vinylist

IT

weewx sqlite und falsche Daten aus dB löschen

Wie löscht man aus der weewx sqlite Datenbank falsche bzw. nicht gewollte Daten per Commandline raus ?

Ich habe mich eben mit der Thematik befasst, da aus irgendeinem Grund – womöglich eine Übermittlungsstörung – zB. ein Innentemperaturwert von 4°C und eine Regenrate von über 2000mm/h übermittelt wurden.

Mit der Zeit ändert sich die Vorgehensweise.
Hier zeige ich, wie man mit der Version 4.10.1 falsch erfasste Windböen berichtigt.
Der alte Artikel steht weiter unten.

Erstmal weewx beenden
sudo service weewx stop

Ein Backup der dB kann nicht schaden.
cp /var/lib/weewx/weewx.sdb /var/lib/weewx/weewx_backup.sdb

Gibt es Datensätze die zu bereinigen wären? Ich frage ab >90 km/h, da es keinen Sturm seit meinen Aufzeichnungen mit Böen größer 90km/h gab.
echo “SELECT windGust FROM archive WHERE (windGust > 90);” | sqlite3 /var/lib/weewx/weewx.sdb

In meinem Fall wurden 25 Datensätze ausgegeben. Diese werden nun korrigiert. Ich überschreibe diese einfach mit dem Wert 10.0
echo “SELECT windGust FROM archive WHERE (windGust = 10.0);” | sqlite3 /var/lib/weewx/weewx.sdb

Ein erneute Check bringt keine Werte mehr zurück.
echo “SELECT windGust FROM archive WHERE (windGust > 90);” | sqlite3 /var/lib/weewx/weewx.sdb

Entfernen der täglichen Statistiken
sudo wee_database –drop-weekly

Rebuild der täglichen Statistiken (Achtung, ohne Datumsbereichseinschränkung kann das lange laufen – siehe man)
sudo wee_database –rebuild-daily

Falls mit der Version 4.10.1 der Imagegenerator noch nicht ausgetauscht wurde, ist dies nachzuholen
sudo rm /usr/share/weewx/weewx/imagegenerator.py
sudo wget -P /usr/share/weewx/weewx https://raw.githubusercontent.com/weewx/weewx/master/bin/weewx/imagegenerator.py

weewx starten
sudo service weewx start

Gibt weewx einen Fehler aus?
sudo service weewx status

Es hat sich in meinem Fall als nützlich gezeigt, das System nach ~5min durchzustarten.
sudo reboot

Das war’s … danach sollten die Daten neu auf der WEB-Site hochgeladen werden, kann aber etwas dauern.


Der alte Artikel:

Wie also nun diese falschen Daten wieder aus der dB entfernen ?

  1. Backup der dB anlegen:
    sudo /etc/init.d/weewx stop
    sudo cp /home/weewx/archive/weewx.sdb /home/weewx/archive/backup_weewx.sdb
    sudo /etc/init.d/weewx start
  2. sqlite3 installieren
    sudo apt-get install sqlite3
  3. Daten finden, welche korrigiert werden müssen:
    Um zB den Wert der Innentemperatur zu korrigieren, schauen wir mal, welcher da so aus der Reihe tanzte:
    echo “SELECT intemp FROM archive WHERE (intemp < 60);” | sqlite3 /home/weewx/archive/weewx.sdb
    42.8

!! Die Ausgabe sowie Abfrage erfolgt in Farenheit – einen Umrechner gibt es hier: http://www.celsius-fahrenheit.de

Um diesen Datensatz zu korrigieren, ist folgender Command nötig:
echo “UPDATE archive SET inTemp=75.2 WHERE (inTemp < 60);” | sudo sqlite3 /home/weewx/archive/weewx.sdb
Diese Prozedur ist bei allen Falschdaten anzuwenden.

Natürlich kann man die SQL-Abfragen noch etwas einschränken, falls erforderlich:
echo “SELECT inTemp FROM archive WHERE (inTemp < 70 AND dateTime > 1426470000);” | sqlite3 /home/weewx/archive/weewx.sdb
Ebenso das Update des Datensatzes:
echo “UPDATE archive SET inTemp=75 WHERE (intemp < 70 AND dateTime > 1426470000);” | sudo sqlite3 /home/weewx/archive/weewx.sdb

Umrechnung bezüglich Unix-Timestamp gibt es hier: https://www.aritso.net/mehr-informationen/tools/timestampconverter.htm

Um zB falsche Regenwerte zu entfernen:
echo “SELECT dateTime, rainrate FROM archive WHERE (rainrate > 20);” | sqlite3 /home/weewx/archive/weewx.sdb
1431008100|41.71653539052
1431008400|41.71653539052
1431008700|27.81102359368

echo “UPDATE archive SET rainrate=0.014173228 WHERE (rainrate > 20);” | sudo sqlite3 /home/weewx/archive/weewx.sdb

Eine komplette Auflistung der Spaltennamen der weewx-Datenbank … ja, daran werke ich noch. Dachte das wäre einfach … jedoch stehe ich da wohl aktuell auf der Leitung.
Folgende habe ich bis dato ermittelt:
dateTime
barometer
pressure
altimeter
inTemp
outTemp
inHumidity
outHumidity
windSpeed
windDir
windGust
windGustDir
rainRate
rain
Um die summeries zu löschen, ist folgender Befehl nötig:
sudo /home/weewx/bin/wee_config_database /home/weewx/weewx.conf –drop-daily

Danach ein Restart von weewx und die sumeries werden neu berechnet.

Schreibe einen Kommentar