Hallo zusammen,
ich betreibe einen Netatmo Wetterstation. Die zugehörige Webseiten findet ihr hier --> https://station.cyberninja.de/ (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
Was ist ein AQ-Sensor?
Herzlich willkommen hier.
Hi!
AQ wird wohl Air Quality bedeuten. Also Feinstaubsensor vermutlich.
Oliver
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
Man immer diese Abkürzungen.
Wir sind doch hier nicht bei SMS und Whatsapp :D :D :D
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)
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