# Latitude in decimal degrees. Negative for southern hemisphere
latitude = XX.XXX
# Longitude in decimal degrees. Negative for western hemisphere.
longitude = XX.XXX
dann liegt es daran.
Wenn die Werte korrekt sind, habe ich auch keine Idee mehr.
Ich würde dann bei der Authorin der GTS-Erweiterung (Johanna Roedenbeck)
direkt nachfragen.
Die Koordinaten sind in meiner weewx.conf natürlich nicht mit xx.xxx eingetragen, die wollte ich jetzt nur nicht in die breite Öffentlichkeit tragen
Die sollten aber eigentlich korrekt eingetragen sein, die Sonne und Mond Daten und die Koordinaten bei den Stationsdaten werden richtig angezeigt.
Dann frage ich mal GTS Autorin nach.
Vielen herzlichen Dank für Deine Hilfe und Deine geduldigen Erklärungen
Werner hat geschrieben: ↑02 Nov 2021 15:44 https://github.com/Jterrettaz/sundurati ... uration.py - Berechnung der Sonnenscheindauer.
Welches allerdings von mir modifiziert wurde https://www.pc-wetterstation.de/weewx/u ... uration.py
und die Konfiguration via die weewx.conf und diesem Eintrag gemacht wird:
[RadiationDays]
min_sunshine = 120 #andere Erweitung = Grenzwert
sunshine_log = 0 # es soll nicht protokolliert werden, wenn Sonnenschein erfasst wird
sunshine_coeff = 0.72 #Faktor ab welchen Wert Sonnenschein gezählt wird - je höher um so später
sunshine_min = 18 # unter diesem Wert, wird Sonnenschein nicht berücksichtigt.
Hallo Werner,
Ich habe Deine modifizierte Datei bei mir ausprobiert, vorher lief die originale Datei des Entwicklers. Leider werden dann in meinem Belchertown-Skin die Sonnenshein-Werte nicht mehr angezeigt.
Da steht dann so etwas:
Sonne heute: $day.sunshine_time.sum.hour -> also wird die Variable in der index.html.tmpl nicht mehr übersetzt..
Sonne Monat: $month.sunshine_time.sum.hour
Heisst die Sonnenschein-Variable in deinem Script denn anders als "sunshine_time" wie im originalen Script? Ich fand bei deinem Script die Konfigurationsmöglichkeit in der weewx.conf gut, deshalb habe ich das ausprobiert. Nachdem ich die originale Datei wieder zurückgespielt habe, ist wieder alles korrekt, wird natürlich auch wieder protokolliert. (sudo journalctl -f).
Kann ich etwas an meiner Vorlagendatei ändern, damit auch mit deinem Script die Sonnenstunden wieder korrekt angezeigt werden?
Beste Grüsse,
Michael
Ich bin zwar nicht Werner, aber bei mir funktioniert es mit
$day.sunshineDur.sum
$month.sunshineDur.sum
Ich weiß nicht, ob du die Sonnenscheindauer noch in weiteren Darstellungen (z.B. Diagramm) über einen längeren Zeitraum darstellst.
In diesem Fall könnte es Probleme geben, da die Variable sunshine_time in Werner seiner Erweiterung den Wert der Solarstrahlung angibt, ab dem Sonnenschein angenommen wird. Diese Dauer wird dann unter der Variable sunshineDur erfasst.
Somit ist lt. Originalerweiterung die Variable sunshine_time eine Dauer, und lt. Werner seiner Erweiterung ein Grenzwert der Solarstrahlung.
Da ich die sunshineDur seit 2011 auswerte, habe ich für mich die sunshine_time für die historischen Daten über die maxSolarRad näherungsweise berechnet, und wenn nun die radiation > sunshine_time war habe ich 5 min. Sonnenschein angenommen.
Ich denke Werner wird meine Aussage korrigieren, für den Fall, dass ich Blödsinn verzapft habe.
#sunshine_time = Value when sunshine duration is recorded in W/m²
#sunshineDur = Sunshine duration value in the archive interval in seconds
#rainDur = rain duration value in the archive interval in seconds
#hailDur = rain duration value (Ecowitt-Piezo) in the archive interval in seconds
#sunshineDur_2 = Sunshine duration value in the archive interval in seconds for 2. DAVIS station (e.g. live or console)
#rainDur_2 = Rain duration value in the archive interval in seconds for 2. DAVIS station (e.g. live or console)
[RadiationDays]
min_sunshine = 120 # Entry of extension radiationhours.py, if is installed (= limit value)
sunshine_coeff = 0.8 # Factor from which value sunshine is counted - the higher the later
sunshine_min = 18 # below this value (W/m²), sunshine is not taken into account.
sunshine_loop = 1 # use for sunshine loop packet (or archive: sunshine_loop = 0)
rainDur_loop = 0 # use for rain duration loop packet - default is not
hailDur_loop = 0 # use for piezo-rain duration loop packet - default is not
sunshine_log = 0 # should not be logged when sunshine is recorded
rainDur_log = 0 # no logging for rain duration
hailDur_log = 0 # no logging for piezo-rain duration
rain2 = 0 # no rain2 available (Davis Live, Davis Console)
sunshine2 = 0 # no shunhine2 available (Davis Live, Davis Console)
sunshine2_loop = 1
rainDur2_loop = 0
sunshine2_log = 0
rainDur2_log = 0
Wenn Du die Verlaufsdauer des Sonnenscheins im Belchertown-skin möchtest, muss Du auch meine geänderte belchertown.py Datei verwenden.
Wobei es bei Github jetzt einen eigenen Eintrag für sunrainduration gibt und hier dann für
sunshine_time -> sunshinetime verwendet wird!
Es sind dort auch Beispiele für den Belchertown Skin enthalten. https://github.com/WernerKr/weewx-sunrainduration
Hallo,
Oh, das scheinen mir doch recht viele Eingriffe zu sein, die für die Verwendung des Skriptes von Werner notwendig sind. Es läuft ja bei mir mit dem originalen Script auch schon recht gut, von daher ist mir das jetzt zu viel Aufwand. Ich könnte ja auch im originalen Script den Koeffizenten einfach ändern, um die Sonnenscheindauer anpassen. Mehr bräuchte ich nicht, da ich schon alles wie gewünscht im Belchertown-Skin integriert habe.
Vielleicht kann mir jemand von euch sagen, wo der änderbare Koeffizient im originalen sunshineduration-Script steht?
Habe es mal hier angehängt:
import syslog
from math import sin, cos, pi, asin
from datetime import datetime
import time
import weewx
from weewx.wxengine import StdService
try:
# Test for new-style weewx logging by trying to import weeutil.logger
import weeutil.logger
import logging
class SunshineDuration(StdService):
def __init__(self, engine, config_dict):
# Pass the initialization information on to my superclass:
super(SunshineDuration, self).__init__(engine, config_dict)
def newLoopPacket(self, event):
"""Gets called on a new loop packet event."""
radiation = event.packet.get('radiation')
if radiation is not None:
if self.lastdateTime == 0:
self.lastdateTime = event.packet.get('dateTime')
self.LoopDuration = event.packet.get('dateTime') - self.lastdateTime
self.lastdateTime = event.packet.get('dateTime')
seuil = self.sunshineThreshold(event.packet.get('dateTime'))
if radiation > seuil and seuil > 0:
self.sunshineSeconds += self.LoopDuration
self.cum_time += self.LoopDuration
self.lastSeuil = seuil
logdbg("Calculated LOOP sunshine_time = %f, based on radiation = %f, and threshold = %f" % (
self.LoopDuration, radiation, seuil))
def newArchiveRecord(self, event):
"""Gets called on a new archive record event."""
radiation = event.record.get('radiation')
seuil = self.sunshineThreshold(event.record.get('dateTime'))
if self.lastdateTime == 0 or self.firstArchive: # LOOP packets not yet captured : missing archive record extracted from datalogger at start OR first archive record after weewx start
event.record['sunshine_time'] = 0.0
if radiation is not None:
self.lastSeuil = seuil
if radiation > seuil and seuil > 0:
event.record['sunshine_time'] = event.record['interval']
event.record['is_sunshine']=1
else:
event.record['is_sunshine']=0
if self.lastdateTime != 0: # LOOP already started, this is the first regular archive after weewx start
self.firstArchive = False
loginf("Estimated sunshine duration from archive record= %f min, radiation = %f, and threshold = %f" % (
event.record['sunshine_time'], event.record['radiation'], self.lastSeuil))
else:
if radiation is not None:
if radiation > seuil and seuil > 0:
event.record['is_sunshine']=1
else:
event.record['is_sunshine']=0
if self.cum_time > 0: # do not divide by zero!
event.record['sunshine_time'] = self.sunshineSeconds/self.cum_time * event.record['interval']
else:
event.record['sunshine_time'] = 0
loginf("Sunshine duration from loop packets = %f min" % (event.record['sunshine_time']))
Du musst eigentlich nur Dein jetzt vorhandenes Datenbank-Feld 'sunshine_time' ändern zu sunshineDur
Und dann in in der graphs.conf
eben auch 'sunshine_time' durch 'sunshineDur' ersetzen.
Wenn Du sinshine_time noch vonanders verwendest (was ich nicht vermute)
dann dort auch austauschen.
Ich hab mir sagen lassen müssen, man sollte in WeeWx keine wichtigen Felder mit einem
Unterstrich im Feldnamen verwenden. z.B. wenn man in Belchertown MQTT nutzen will, geht das nicht.
wo der änderbare Koeffizient im originalen sunshineduration-Script steht
Er verwendet keinen Koeffizient mehr! früher war das so
Hallo Werner,
Oha, an die Datenbank von WeeWx traue ich mich nicht so wirklich ran.. ehrlichgesagt. Wenn da etwas schiefläuft, sind womöglich die Daten seit 2002 futsch und es war eine ziemliche Mühe, diese Daten alle in WeeWx zu importieren bzw. das hat sehr lange gedauert.
Da würde ich mich wohl nur mit einer Schriff für Schritt-Anleitung rantauen..
Soweit läuft das originale Script ja auch ganz gut.
Nur deine Codezeile in das Originalscript "einzufügen wird ja sicherlich nichts bringen, oder?
Beste Grüsse
Michael
Nur deine Codezeile in das Originalscript "einzufügen wird ja sicherlich nichts bringen, oder?
Nein wird nicht funktionieren.
Nun so kompliziert ist das nicht!
Welche WeeWx Version verwendest Du?
Dazu muss sowie weewx gestoppt werden/sein
Ich gehe von einem Debian-System aus (sonst dürften sich die Pfade unterscheiden)
Datenbank (wahrscheinlich unter /var/lib/weewx/weewx.sdb ) sichern.
Hallo Werner,
Habe die WeeWx-Version 5.0.3 laufen.
Wenn ich den Namen in der DB ändere, dann muss ich später überall da, wo ich in den Grafik-Referenzen "sunshine_time" drin stehen habe auf sunshineDur ändern, oder? Und ich habe ja in den Grafiken als Einheit Minuten drin bzw. lasse das in der index.html.tmpl dann gleich in Stunden ausgeben. Würde das dann auch mir der sunshineDur gehen?
Dann müsste ich noch deine modifizierte "belcherton.py" einspielen
Und dann dein modifiziertes sunshine_duration.py verwenden
Hallo Werner,
Vielen Dank für Deine Hilfestellung!
Werde es in Angriff nehmen, wenn das Wetter hier schlechter ist.. Aktuell haben wir hier im Norden strahlenden Sonnenschein bei 25 Grad.
Ich hoffe sehr, das die Hochwasserlage bei Dir noch unkritisch ist und das auch bleibt!
Beste Grüsse
Michael