Beitrag

Daten in WeeWX auslesen / anpassen

Kein Backup, KEIN MITLEID! :stuck_out_tongue_closed_eyes::wink:

Dieser Beitrag dient als Doku bzw. Gedankenstütze, wenn wieder mal Daten in der WeeWX DB angepasst werden müssen, warum auch immer.

Wie heute, z.B. wegen Stromausfall. Fangen wir an.

Leere Datensätze mit Zeistempel auslesen

1
2
3
4
5
6
7
8
echo "SELECT dateTime, outTemp FROM archive WHERE outTemp is null" | sqlite3 weewx.sdb
1598451660|
1598451750|
1598451840|
1598451930|
1599103350|
1599810750|
1600950060|

Das Gleiche nochmal aber als Gesamtanzahl der Einträge, falls wer die Angabe mal haben möchte.

1
2
echo "SELECT dateTime, outTemp FROM archive WHERE outTemp is null" | sqlite3 weewx.sdb | wc -l
45

Das Gleiche nochmal aber mit eingeschränktem Zeitraum. Bitte Unix Zeit verwenden. Hier ein Converter…

1
2
3
4
5
6
7
echo "SELECT dateTime, outTemp FROM archive WHERE outTemp is null and dateTime > 1594926360 and dateTime < 1598451750" | sqlite3 weewx.sdb
1597495560|
1597731600|
1598451390|
1598451480|
1598451570|
1598451660|

Beispiel für heute?

1
2
3
echo "SELECT dateTime, outTemp FROM archive WHERE outTemp is null and dateTime > 1664661600 and dateTime < 1664722800" | sqlite3 weewx.sdb
1664700240|
1664700360|

Alte / falsche Daten komplett löschen

Direkt in der DB, ggf. vorher sqlite3 installieren.

1
2
# falls nicht schon installiert
apt install sqlite3 -y
1
2
3
4
5
# DB öffnen
cd /var/lib/weewx
sqlite3 weewx.sdb
# bzw. alles in einem
sqlite3 /var/lib/weewx/weewx.sdb

Vorher ein Backup der DB anlegen! Hier wird am offenen Herzen operiert!
cd /var/lib/weewx
cp weewx.sdb weewx.sdb_backup

Daten werden wie folgt gelöscht! Alles wird davor oder dazwischen gelöscht.

1
2
3
4
5
6
# davor
sqlite> delete from archive where dateTime <1664701460;
# dazwischen
sqlite> delete from archive WHERE dateTime >1664700040 and dateTime <1664701460;
# verlassen
sqlite> .quit

Daten mit neuen Werten anpassen

Daten wie oben, vorher anzeigen lassen und den Zeitstempel notieren. Fixen wir die beiden leeren Einträge.
Einheit beim Import beachten, outTemp wird in Fahrenheit hinterlegt.

1
2
3
4
5
echo "SELECT dateTime, outTemp FROM archive WHERE dateTime > 1664699700 and dateTime < 1664700480" | sqlite3 weewx.sdb
1664700000|57.74
1664700240|
1664700300|57.56
1664700360|

Nachtragen / ändern mit… Sollte z.B.: die Temperatur über mehrere Intervalle gleich bleiben, kann auch wieder der Zeitraum mit angegeben werden.

1
2
echo "UPDATE archive set outTemp = 57.74 WHERE dateTime = 1664700240" | sqlite3 weewx.sdb
echo "UPDATE archive set outTemp = 57.5 WHERE dateTime = 1664700360" | sqlite3 weewx.sdb

Prüfen wir erneut.

1
2
3
4
5
echo "SELECT dateTime, outTemp FROM archive WHERE dateTime > 1664699700 and dateTime < 1664700480" | sqlite3 weewx.sdb
1664700000|57.74
1664700240|57.74
1664700300|57.56
1664700360|57.5

:+1:

Dann einmal die tägl. Summen neu berechnen, Datum mit angeben, dann dauert es nicht ewig.

1
2
3
4
5
6
7
8
9
wee_database --rebuild-daily --date=2022-10-02
#
Using configuration file /etc/weewx/weewx.conf
Using database binding 'wx_binding', which is bound to database 'archive_sqlite'
Daily summary for 2022-10-02 will be rebuilt.
Proceed (y/n)? y
Rebuilding daily summaries in database 'weewx.sdb' ...
Processed 593 records to rebuild 1 daily summary in 0.39 seconds
Rebuild of daily summaries in database 'weewx.sdb' complete

Eine Übersicht aller Werte findet man hier unter “Units” und “Unit groups, members and options”. Andere Möglichkeiten sind hier zu finden, z.B.: zum Löschen utopischer Windgeschwindigkeiten.

1
2
echo "SELECT * FROM archive WHERE (windSpeed > 100);" | sqlite3 /var/tmp/backup.sdb
echo "SELECT * FROM archive WHERE (windGust  > 100);" | sqlite3 /var/tmp/backup.sdb

Irrtümer vorbehalten, jeder sollte wissen was er tut und min. ein, zwei, vier Backups haben!

Kein Backup, KEIN MITLEID! :stuck_out_tongue_closed_eyes::wink:

Dieser Eintrag ist vom Autor unter CC BY 4.0 lizensiert.