WeeWx Datenbank mit metrischen Einheiten betreiben.

Für allgemeine Software
Antworten
speerwerfer
Offline
Beiträge: 130
Registriert: 21 Dez 2020, 22:07
Wohnort: zwischen Osnabrück und Bremen
Hat sich bedankt: 6 mal
Danksagung erhalten: 2 mal

WeeWx Datenbank mit metrischen Einheiten betreiben.

#1

Beitrag von speerwerfer »

Hallo.

Ich beschäftige mich gerade mit weewx. Datenbankintern werden die Daten ja standardmäßig in US Einheiten gespeichert und für die Ausgabe konvertiert. Selbst wenn die Hardware in metrischen Einheiten die Daten übergibt, werden die für die Datenbank in US Einheiten gewandelt.

Da ich die Daten ggf auch noch anderes auswerten möchte, überlege ich die Datenbank mit metrischen Einheiten zu betreiben. Dann kann ich die Daten aus der DB extern so benutzen ohne diese zu konvertieren. Macht das hier schon jemand? Spricht etwas gegen die Idee?

Martin
Benutzeravatar
Gyvate
Offline
Beiträge: 2479
Registriert: 10 Aug 2021, 23:41
Wohnort: Saarbrücken
Hat sich bedankt: 12 mal
Danksagung erhalten: 375 mal
Kontaktdaten:

Re: WeeWx Datenbank mit metrischen Einheiten betreiben.

#2

Beitrag von Gyvate »

Nun, weewx ermöglicht auch das Abspeichern in der Datenbank in metrischen Einheiten. Solange man auf die Datenbank via weewx (Tools) zugreift, ist es völlig egal und gleichwertig, die DB mit metrischer oder US Customary Architektur zu betreiben. Wenn man natürlich mit anderen Tools die Datenbank direkt bearbeiten will, kann es sein, dass im kontinentalen Europa das Abspeichern in metrischen Einheiten Vorteile bringt (z.B. Konvertierungsroutinen, die diese direkten Datenbankzugriffstools nicht haben, unnötig macht).

Weewx Dokumentation:
" The unit architecture in WeeWX is designed to make basic unit conversions and display of units easy. It is not designed to provide dimensional analysis, arbitrary conversions, and indications of compatibility.

The driver reads observations from an instrument and converts them, as necessary, into a standard set of units. The actual units used by each instrument vary widely; some instruments use Metric units, others use US Customary units, and many use a mixture. The driver ensures that the units are consistent for storage in the WeeWX database. By default, and to maintain compatibility with wview, the default database units are US Customary, although this can be changed.

Note that whatever unit system is used in the database, data can be displayed using any unit system. So, in practice, it does not matter what unit system is used in the database."

in Deutsch:
" Die Einheitenarchitektur in WeeWX ist so konzipiert, dass grundlegende Einheitenumrechnungen und die Anzeige von Einheiten einfach sind. Sie ist nicht dazu gedacht, Dimensionsanalysen, beliebige Umrechnungen und Kompatibilitätshinweise zu liefern.

Der Treiber liest die Beobachtungen von einem Messgerät und konvertiert sie bei Bedarf in einen Standardsatz von Einheiten. Die von den einzelnen Instrumenten tatsächlich verwendeten Einheiten sind sehr unterschiedlich; einige Instrumente verwenden metrische Einheiten, andere die US Customary Units, und viele verwenden eine Mischung davon. Der Treiber stellt sicher, dass die Einheiten für die Speicherung in der WeeWX-Datenbank konsistent sind. Standardmäßig und um die Kompatibilität mit wview aufrechtzuerhalten, sind die Standardeinheiten der Datenbank US Customary, obwohl dies geändert werden kann.

Beachten Sie, dass die Daten unabhängig vom Einheitensystem in der Datenbank in jedem Einheitensystem angezeigt werden können. In der Praxis spielt es also keine Rolle, welches Einheitensystem in der Datenbank verwendet wird."

wview ist übrigens das von weewx verwendete Datenbank-Schema, das auf den von einer Davis Wetterstation lieferbaren Daten beruht. (Es gibt wview (alt) und wview-extended (neu)). Seit weewx Version 4 wird beim Einrichten der Datenbank wview-extended verwendet. Kann aber in weewx.conf geändert werden.
Ecowitt WS2320E,HP2553,HP3501,GW2001,GW1100, GW1000,WH2650,WN1910,WN1980, Meteobridge RPi4B-2GB/(16)32GB SLC 3165, Weewx 4.5.1/4.10.2, CumulusMX 3.28.4 b3282, Barani MeteoShield Pro, MetSpecRad02, Personal Weather Tablet(PWT) - http://meshka.eu
speerwerfer
Offline
Beiträge: 130
Registriert: 21 Dez 2020, 22:07
Wohnort: zwischen Osnabrück und Bremen
Hat sich bedankt: 6 mal
Danksagung erhalten: 2 mal

Re: WeeWx Datenbank mit metrischen Einheiten betreiben.

#3

Beitrag von speerwerfer »

Da ich die Daten auch noch mit anderen Tools auswerten und visualisieren (Grafana) möchte, hab ich mich da jetzt noch mal durch die Doku gegraben. Es scheint nicht wirklich ein Problem zu sein in der DB das metrische System zu nutzen. Mit dem Utilitie wee_database könnte ich sogar eine bestehende Datenbank von US in metrisches System umwandeln.

Ich hab das mal probiert und dabei festgestellt, das mir Daten einer manuell hinzugefügten Datenbankspalte verloren gegangen sind.

Das liegt daran, dass beim reconfigure das in der weewx.conf hinterlegte Datenbankschema benutzt wird. Da steht halt keine manuell hinzugefügte Spalte drin. Wer das also sauber nachträglich machen will, der muss beim manuellen hinzufügen eine Datenbankspalte wohl auch ein eigenes Schema für die Datenbank erstellen, die dann auch die neue Spalte enthält, damit ein reconfigure nachträglich sauber funktioniert.

Martin
Benutzeravatar
Gyvate
Offline
Beiträge: 2479
Registriert: 10 Aug 2021, 23:41
Wohnort: Saarbrücken
Hat sich bedankt: 12 mal
Danksagung erhalten: 375 mal
Kontaktdaten:

Re: WeeWx Datenbank mit metrischen Einheiten betreiben.

#4

Beitrag von Gyvate »

speerwerfer hat geschrieben: 12 Sep 2021, 17:27 Da ich die Daten auch noch mit anderen Tools auswerten und visualisieren (Grafana) möchte, hab ich mich da jetzt noch mal durch die Doku gegraben. Es scheint nicht wirklich ein Problem zu sein in der DB das metrische System zu nutzen. Mit dem Utilitie wee_database könnte ich sogar eine bestehende Datenbank von US in metrisches System umwandeln.

Ich hab das mal probiert und dabei festgestellt, das mir Daten einer manuell hinzugefügten Datenbankspalte verloren gegangen sind.

Das liegt daran, dass beim reconfigure das in der weewx.conf hinterlegte Datenbankschema benutzt wird. Da steht halt keine manuell hinzugefügte Spalte drin. Wer das also sauber nachträglich machen will, der muss beim manuellen hinzufügen eine Datenbankspalte wohl auch ein eigenes Schema für die Datenbank erstellen, die dann auch die neue Spalte enthält, damit ein reconfigure nachträglich sauber funktioniert.

Martin
Na ja, vielleicht nicht unbedingt ein eigenes DB-Schema anlegen, sondern wview_extended.py entsprechend anpassen/erweitern.
Aber vielleicht war das ja mit dem Satz gemeint.
Ecowitt WS2320E,HP2553,HP3501,GW2001,GW1100, GW1000,WH2650,WN1910,WN1980, Meteobridge RPi4B-2GB/(16)32GB SLC 3165, Weewx 4.5.1/4.10.2, CumulusMX 3.28.4 b3282, Barani MeteoShield Pro, MetSpecRad02, Personal Weather Tablet(PWT) - http://meshka.eu
speerwerfer
Offline
Beiträge: 130
Registriert: 21 Dez 2020, 22:07
Wohnort: zwischen Osnabrück und Bremen
Hat sich bedankt: 6 mal
Danksagung erhalten: 2 mal

Re: WeeWx Datenbank mit metrischen Einheiten betreiben.

#5

Beitrag von speerwerfer »

Gyvate hat geschrieben: 13 Sep 2021, 00:29 Na ja, vielleicht nicht unbedingt ein eigenes DB-Schema anlegen, sondern wview_extended.py entsprechend anpassen/erweitern.
Aber vielleicht war das ja mit dem Satz gemeint.
Ja, das geht natürlich auch. Aber ich lege bei sowas - wenn möglich - eine eigene Konfiguration an. Nicht das ein kommendes Update mal meine Anpassung überschreibt, oder irgend ein Teil der Software erwartet, das an der Datei nix geändert wurde.
Benutzeravatar
Gyvate
Offline
Beiträge: 2479
Registriert: 10 Aug 2021, 23:41
Wohnort: Saarbrücken
Hat sich bedankt: 12 mal
Danksagung erhalten: 375 mal
Kontaktdaten:

Re: WeeWx Datenbank mit metrischen Einheiten betreiben.

#6

Beitrag von Gyvate »

m.E. gibt es beide (ggf. auch noch mehr) Möglichkeiten
1. Original kopieren (2 x). Ergänzung an einer Kopie vornehmen. Als Update abspeichern. Update auf Original kopieren.
Damit sind ursprüngliches Original und die eigene Erweiterung gegen Überschreiben geschützt.
oder
2. Original kopieren. Ergänzung vornehmen. Unter eigenem Namen abspeichern. DB-Schema-Referenz in weewx.conf ändern.

Beide Vorgehensweisen erzeugen ein erweitertes DB-Schema und erhalten die Änderungen.
Ecowitt WS2320E,HP2553,HP3501,GW2001,GW1100, GW1000,WH2650,WN1910,WN1980, Meteobridge RPi4B-2GB/(16)32GB SLC 3165, Weewx 4.5.1/4.10.2, CumulusMX 3.28.4 b3282, Barani MeteoShield Pro, MetSpecRad02, Personal Weather Tablet(PWT) - http://meshka.eu
speerwerfer
Offline
Beiträge: 130
Registriert: 21 Dez 2020, 22:07
Wohnort: zwischen Osnabrück und Bremen
Hat sich bedankt: 6 mal
Danksagung erhalten: 2 mal

Re: WeeWx Datenbank mit metrischen Einheiten betreiben.

#7

Beitrag von speerwerfer »

Noch eine Frage zu den Einheiten: Wenn ich dem Schema/Datenbank eine neue Spalte hinzugefügt habe, die den DB Type Real hat, woher weiß dann weewx welche Einheit diese Werte haben.

Also z.B. TempVogelhaus - woher weiß weewx, das es sich um eine Temperatur handelt? Und woher dann, das die Werte in der DB in °C und nicht in °F sind. Letzteres kommt wohl aus der weewx.conf und dem dort eingestellten target_unit Wert. Aber dann müsste ich immer noch meinem neuen Datenbankfeld die Gruppe "Temperatur" hinzufügen. Mach ich das wirklich in der Datei bin/weewx/units.py

Bei dem Service MQTTSubscribe gebe ich in der weewx.conf an, mit welcher Einheit ich einen Wert vom MQTT Broker bekomme. Das ist nötig, damit weewx diesen Wert ggf. in das vorgegebene Einheitensystem der Datenabnk wandeln kann (in der Regel US). Aber wenn nun eine Report auf diese neue Spalte in der Datenbank zugreifen soll, muss der Reportgenerator ja wissen welche Einheit diese Spalte in der Datenabank hat. Da habe ich bisher nur die Dictionarys in bin/weewx/units.py gefunden.
Benutzeravatar
Gyvate
Offline
Beiträge: 2479
Registriert: 10 Aug 2021, 23:41
Wohnort: Saarbrücken
Hat sich bedankt: 12 mal
Danksagung erhalten: 375 mal
Kontaktdaten:

Re: WeeWx Datenbank mit metrischen Einheiten betreiben.

#8

Beitrag von Gyvate »

speerwerfer hat geschrieben: 13 Sep 2021, 23:01 Noch eine Frage zu den Einheiten: Wenn ich dem Schema/Datenbank eine neue Spalte hinzugefügt habe, die den DB Type Real hat, woher weiß dann weewx welche Einheit diese Werte haben.

..... Mach ich das wirklich in der Datei bin/weewx/units.py
......
Entweder in units.py oder (m.E. besser) in extensions.py (/usr/share/weewx/user/extensions.py).
Letzteres wird bei Updates nicht überschrieben. units.py schon.
Ecowitt WS2320E,HP2553,HP3501,GW2001,GW1100, GW1000,WH2650,WN1910,WN1980, Meteobridge RPi4B-2GB/(16)32GB SLC 3165, Weewx 4.5.1/4.10.2, CumulusMX 3.28.4 b3282, Barani MeteoShield Pro, MetSpecRad02, Personal Weather Tablet(PWT) - http://meshka.eu
Antworten