• 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ü

Externe Werte in die WeeWX Datenbank mit aufnehmen

Begonnen von rodolfo, 03.05.2020, 11:06:22

⏪ vorheriges - nächstes ⏩

rodolfo

Hallo zusammen,

ich betreibe einen Netatmo Wetterstation. Die zugehörige Webseiten findet ihr hier --> https://station.cyberninja.de/.

Die Auswertung geschieht mit WeeWX, dies läuft auf einem Raspberry und generiert die beiden Webseiten. So weit. so gut!

Da ich noch keinen eigenen UV und AQ Sensor habe, hole ich mir die entsprechenden Daten von nahegelegenen Stationen und zeige diese direkt im Template an. Nun würde ich diese Daten allerdings gerne in die WeeWX Datenbank mit aufnehmen (für Statistiken und Auswertungszwecke). Wie gehe ich da vor? Kann mich diesbezüglich eventuell jemand auf den richtigen Weg bringen?

Vielen Dank vorab
Viele Grüße
Rolf

gargamel

Was ist ein AQ-Sensor?
Herzlich willkommen hier.
LG
Wilfried

Mitglied beim www.ruhrwetter.de und www.wettersektor.de
www.wilfried-monika.de

Davis VantagePro2 Active Plus, Wetterdirekt Sirius 300 und Sturmglas, TOA-Blitzortung, Radioaktivmessung

olicat

Hi!

AQ wird wohl Air Quality bedeuten. Also Feinstaubsensor vermutlich.

Oliver

rodolfo

Hallo Wilfried,

danke schön.  :)

Ein Feinstaub Sensor zum messen der Luftqualität (Air Qualität).

Viele Grüße
Rolf

edit: da war jemand schneller

gargamel

Man immer diese Abkürzungen.
Wir sind doch hier nicht bei SMS und Whatsapp  :D :D :D
LG
Wilfried

Mitglied beim www.ruhrwetter.de und www.wettersektor.de
www.wilfried-monika.de

Davis VantagePro2 Active Plus, Wetterdirekt Sirius 300 und Sturmglas, TOA-Blitzortung, Radioaktivmessung

shinebar


Ich habe dafür einen neuen Service erzeugt, war ein wenig tricky, weiß also nicht, ob das der "richtige" Weg ist:

Als erstes habe ich ein Script, was die Daten sehr stumpf in eine Textdatei schreibt. Der Inhalt ist dabei nur Wert1,Wert2 (also z.B. 2.53,1.25) - das passiert regelmäßig. Um die Daten in weewx zu lesen, braucht es einen neuen Service (http://www.weewx.com/docs/customizing.htm#Adding_a_service) - der sieht bei mir aus wie der Code unten und liegt in /usr/share/weewx/user/feinstaub.py

Last but not least muss dieser Dienst in der weewx.conf auch geladen werden:
[[Services]]
        data_services = user.feinstaub.StaubService


Viel weiter bin ich aber noch nicht, ich sehe die Daten im Loop, habe sie aber noch nicht in der DB - vielleicht hilft es Dir trotzdem :)

import syslog
import weewx
from weewx.wxengine import StdService

class StaubService(StdService):
    def __init__(self, engine, config_dict):
        super(StaubService, self).__init__(engine, config_dict)
        d = config_dict.get('StaubService', {})
        self.filename = d.get('filename', '/tmp/feinstaub.txt')
        syslog.syslog(syslog.LOG_INFO, "Feinstaub: using %s" % self.filename)
        self.bind(weewx.NEW_ARCHIVE_RECORD, self.read_file)

    def read_file(self, event):
        try:
            with open(self.filename) as f:
                #value = f.read()
                line = f.readline()
                value = line.split(',')

            syslog.syslog(syslog.LOG_DEBUG, "Feinstaub: found value of %s" % value)
            event.record['FeinstaubPM10'] = float(value[0])
            event.record['FeinstaubPM2.5'] = float(value[1])
        except Exception as e:
            syslog.syslog(syslog.LOG_ERR, "Feinstaub: cannot read value: %s" % e)
Wetterstation Klgv. Quickborn
WMR200 mit Selbstbau-Strahlungsschutz
Webcam: Foscam 8904-Clone

rodolfo

#6
Hallo shinebar,

vielen Dank - dein Script hat mich tatsächlich auf den richtigen Weg gebracht. Die gewünschten Werte befinden sich nun im Loop und werden auch in der DB gespeichert.  :top:

Um die Werte in die DB aufzunehmen bin ich wie folgt vorgegangen:

In "/usr/share/weewx/user/extensions.py" folgendes einfügen:

import schemas.wview
schema_extended = schemas.wview.schema + [('BEZ_NEUER_RECORD1', 'REAL'), ('BEZ_NEUER_RECORD2', 'REAL')]


Müsste bei dir dann wohl so aussehen:
schema_extended = schemas.wview.schema + [('FeinstaubPM10', 'REAL'), ('FeinstaubPM2.5', 'REAL')]

Die weewx.conf wie folgt anpassen: Unter [DataBindings] -> [[wx_binding]] die Zeile "schema = schemas.wview.schema" durch "schema = user.extensions.schema_extended" ersetzen.

Nun die Datenbank per "wee_database" neu konfigurieren (hier musste ich den kompletten Pfad zur weewx.conf angeben - bei mir also "/etc/weewx/weewx.conf"):
wee_database /etc/weewx/weewx.conf --reconfigure

Das dauert, je nach DB Größe ein Weilchen. Wenn durchgelaufen wurde eine neue DB angelegt (bei mir weewx.sdb_new). Danach kannst du die neu erstellte Datenbank in weewx.sdb umbenennen oder die Konfiguration zur Verwendung der neuen DB anpassen.

Jetzt noch einen Wiederaufbau der Datenbank anstoßen: 
wee_database /etc/weewx/weewx.conf --rebuild-daily

Und weewx neu starten - ab sofort werden die neuen Werte in den entsprechenden Spalten der DB abgelegt!

Viele Grüße
Rolf