{"id":20975358,"url":"https://github.com/roe-dl/weewx-gts","last_synced_at":"2025-05-14T14:30:39.469Z","repository":{"id":41364062,"uuid":"340611438","full_name":"roe-dl/weewx-GTS","owner":"roe-dl","description":"XType extension for WeeWX to provide solar energy, \"Grünlandtemperatursumme\" (a kind of growing degree days) and \"dayET\" and \"ET24\" as some kind of opposite to \"dayRain\" and \"rain24\"","archived":false,"fork":false,"pushed_at":"2024-07-14T19:53:36.000Z","size":263,"stargazers_count":12,"open_issues_count":0,"forks_count":1,"subscribers_count":5,"default_branch":"master","last_synced_at":"2024-07-14T20:53:40.597Z","etag":null,"topics":["climate-data","gardening","growing-degree-days","gts","solar-energy","sun","vegetation","weewx","xtypes"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/roe-dl.png","metadata":{"files":{"readme":"README-de.md","changelog":"changelog","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-02-20T09:13:45.000Z","updated_at":"2024-07-14T19:53:39.000Z","dependencies_parsed_at":"2023-11-25T22:21:54.693Z","dependency_job_id":"94d8cfe3-c489-4db2-83d1-973ed401d33d","html_url":"https://github.com/roe-dl/weewx-GTS","commit_stats":{"total_commits":87,"total_committers":2,"mean_commits":43.5,"dds":"0.32183908045977017","last_synced_commit":"b2af0f6eef2408d148b9a3e90e5365e5278bd112"},"previous_names":[],"tags_count":7,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/roe-dl%2Fweewx-GTS","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/roe-dl%2Fweewx-GTS/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/roe-dl%2Fweewx-GTS/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/roe-dl%2Fweewx-GTS/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/roe-dl","download_url":"https://codeload.github.com/roe-dl/weewx-GTS/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":225297550,"owners_count":17452010,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["climate-data","gardening","growing-degree-days","gts","solar-energy","sun","vegetation","weewx","xtypes"],"created_at":"2024-11-19T04:42:55.009Z","updated_at":"2025-05-14T14:30:39.462Z","avatar_url":"https://github.com/roe-dl.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# weewx-GTS\nXType-Erweiterung für WeeWX  \n* \"Grünlandtemperatursumme\" (eine Form der Wachstumsgradtage) \n* Sonnenenergie, ein zusätzlicher 'aggregation_type'\n* 'dayET' und 'ET24' als Gegenstück zu 'dayRain' und 'rain24'\n* (potentielle) Äquivalenttemperatur, Mischungsverhältnis, \n  absolute Luftfeuchtigkeit, (Sättigungs)Dampfdruck\n* Tags für Zeitspannen mit einer anderen Tagesgrenze als Mitternacht\n* `yearGDD` und `seasonGDD`\n* `aggregation_type` `GDD` zur Berechnung der Wachstumsgradtage nach verschiedenen Verfahren\n\n## Melden von Fehlern\n\nWenn Sie Fehler melden wollen oder Hilfe benötigen, orientieren Sie sich\nbitte beim Einreichen eines Issues an dem Artikel \n[Help! Posting to weewx user](https://github.com/weewx/weewx/wiki/Help!-Posting-to-weewx-user)\nbezüglich des Aufbaus und des Inhalts Ihres Issues.\n\nBeachten Sie, daß die Größen `GTS` und `yearGDD` nur berechnet werden\nkönnen, wenn Temperaturdaten vom Beginn des Jahres an vorliegen. Wenn\nIhre Datenbank nicht den ganzen Zeitraum vom Jahresanfang bis jetzt\numfaßt, können diese Werte nicht berechnet werden.\n\nWenn Ihnen die Erzeugung der Internet-Seiten in WeeWX zu lange dauert,\nlesen Sie bitte zuerst den WeeWX-Wiki-Artikel\n[V5 Performance Troubleshooting](https://github.com/weewx/weewx/wiki/v5-performance-troubleshooting),\nbevor Sie hier ein Issue einreichen. Wir können zwar versuchen, Dinge\nzu optimieren, sind aber an gewisse Grenzen gebunden.\n\n## Installation:\n\n1) Download\n\n   ```shell\n   wget -O weewx-GTS.zip https://github.com/roe-dl/weewx-GTS/archive/master.zip\n   ```\n\n2) Aufruf des Installationsprogramms\n\n   WeeWX bis Version 4.10\n\n   ```shell\n   sudo wee_extension --install weewx-GTS.zip\n   ```\n\n   WeeWX ab Version 5.0\n\n   ```shell\n   sudo weectl extension install weewx-GTS.zip\n   ```\n\n3) Prüfung der Konfiguration in weewx.conf\n\n   ```\n   [StdWXCalculate]\n       [[Calculations]]\n           ...\n           GTS = software,archive\n           GTSdate = software, archive\n           utcoffsetLMT = software, archive\n           dayET = prefer_hardware, archive\n           ET24 = prefer_hardware, archive\n           yearGDD = software, archive\n           seasonGDD = software, archive\n           outVaporP = software,loop\n           outSVP    = software,loop\n           outMixingRatio = software,loop\n           outEquiTemp = software,loop\n           outThetaE = software,loop\n           outHumAbs = software,loop\n   ...\n   [Engine]\n       [[Services]]\n           ...\n           xtype_services = ... ,user.GTS.GTSService\n   ```\n   \n5) Neustart von WeeWX\n\n   bei SysVinit-Systemen:\n\n   ```shell\n   sudo /etc/init.d/weewx stop\n   sudo /etc/init.d/weewx start\n   ```\n\n   bei systemd-Systemen:\n\n   ```shell\n   sudo systemctl stop weewx\n   sudo systemctl start weewx\n   ```\n\n## Nutzung in Skins:\n\nDie Werte, die diese Erweiterung bereitstellt, können in allen Skins\nvon WeeWX genutzt werden. Sie können als Zahlenwerte angezeigt und\nals Diagramme dargestellt werden.\n\n### Grünlandtemperatursumme\n\nDie Grünlandtemperatursumme gehört zur Gruppe der unter dem Überbegriff\nWachstumsgradtage zusammengefaßten empirischen Größen, die in Landwirtschaft\nund Gartenbau verwendet werden. Sie liefert eine Aussage über den Verlauf \ndes Frühjahrs und wann das Pflanzenwachstum beginnt.\n\n#### Werte anzeigen (CheetahGenerator)\n\n* `GTS`: der Wert der Grünlandtemperatursumme (Beispiel: `$current.GTS`)\n* `GTSdate`: das Datum, wenn die Grünlandtemperatursumme den Wert von 200\n  überschreitet, was als Beginn des Frühlings betrachtet wird (Beispiel: `$day.GTSdate.last.format(\"%d.%m.%Y\")`)\n* `utcoffsetLMT`: Offfset der Ortszeit gegenüber UTC am Ort der Station\n* `LMTtime`: ein String, der die Ortszeit bei der letzten Speicherung\n  angibt (nur mit \".raw\" nutzbar, Beispiel: `$current.LMTtime.raw`)\n\nDie Werte können zusammen mit jedem Zeitraum verwendet werden, der in\nWeeWX verfügbar ist. Es sind die \"aggregation_types\" `avg`, `min`,\n`max`, `last`, `has_data` und `not_null` definiert. Nicht alle Zeiträume \nsind mit jeder Zusammenfassung möglich.\n\nUnter https://weewx.com/docs/customizing.htm#Tags ist die Nutzung von\nTags in WeeWX beschrieben.\n\n#### Diagramme (ImageGenerator)\n\nZur Darstellung von Diagrammen müssen zusätzliche Abschnitte im Bereich\n\\[ImageGenerator\\] der Datei skin.conf definiert werden. Nachfolgend\nsind Beispiele angegeben. \n\nIm Abschnitt \\[\\[month_images\\]\\]:\n\n```\n        [[[monthGTS]]]\n            line_gap_fraction = 0.04\n            yscale = 0,None,None\n            aggregate_type = avg\n            [[[[GTS]]]]\n                aggregate_interval = 86400\n                label = Grünlandtemperatursumme\n```\n\u003cimg src=\"monthGTS.png\" /\u003e\n  \nIm Abschnitt \\[\\[year_images\\]\\]:\n\n```\n        [[[yearGTS]]]\n            aggregate_type = avg\n            [[[[GTS]]]]\n                label = Grünlandtemperatursumme\n```\n\u003cimg src=\"yearGTS.png\" /\u003e\n\nDiese Beispiele erzeugen Dateien mit den Namen 'monthGTS.png' bzw. 'yearGTS.png'. \nUm sie anzuzeigen, ist ein entsprechendes \\\u003cimg\\\u003e Tag in der Datei index.html.tmpl\neinzutragen:\n  \n```\n\u003cimg src=\"monthGTS.png\" /\u003e\n```\n```\n\u003cimg src=\"yearGTS.png\" /\u003e\n```\n\n### Wachstumsgradtage\n\n#### Werte anzeigen (CheetahGenerator)\n\n* `yearGDD`: Summe oder Integral der Wachstumsgrade vom Anfang des Jahres bis zum\n  zum aktuellen Moment\n* `seasonGDD`: Summe oder Integral der Wachstumsgrade beginnend beim Datum von `GTSdate`\n  bis zum aktuellen Moment. Vor `GTSdate` ist der Wert undefiniert, ebenso nach dem\n  31. Oktober\n* aggregation_type `GDD` (oder `growdeg`): Zur Berechnung der Wachstumsgradtage\n  für andere Größen als `outTemp`. Das kann jeder Temperaturwert sein, zum Beispiel\n  die Gewächshaustemperatur.\n\n#### Diagramme (ImageGenerator)\n\nIm Abschnitt \\[\\[year_images\\]\\]:\n\n```\n        [[[yearGDD]]]\n            aggregate_type = avg\n            [[[[yearGDD]]]]\n                label = Growing degree days\n            [[[[seasonGDD]]]]\n                label = Season growing degree days\n```\n\nDieses Beispiel erzeugt eine Graphikdatei namens \"yearGDD.png\". Um sie anzuzeigen,\nmuß das entsprechende \u0026lt;img\u0026gt; Tag zum Beispiel in index.html.tmpl eingefügt werden:\n\n```\n\u003cimg src=\"yearGDD.png\" /\u003e\n```\n\nDie Graphik kann auch mit der Grünlandtemperatursumme kombiniert werden:\n\n```\n        [[[yearGTS]]]\n            aggregate_type = avg\n            [[[[GTS]]]]\n                label = Grünlandtemperatursumme\n            [[[[yearGDD]]]]\n                label = Growing degree days\n            [[[[seasonGDD]]]]\n                label = Season growing degree days\n```\n\nUm dieses Diagramm anzuzeigen, ist folgende Eintragung zum Beispiel in index.html.tmpl nötig:\n\n```\n\u003cimg src=\"yearGTS.png\" /\u003e\n```\n\n### Evapotranspiration\n\n#### Werte anzeigen (CheetahGenerator)\n\n* `dayET`: Summe von ET für den Kalendertag, so wie \"dayRain\" für den\n  Regen\n* `ET24`: Summe von ET für die letzten 24 Stunden, so wie rain24 für den\n  Regen\n\n#### Diagramme (ImageGenerator)\n\n`dayET` and `ET24` werden nicht in Diagrammen benutzt.\n\n### Spezielle abgeleitete meteorologische Größen\n\nWeeWX enthält bereits Berechnungsfunktionen für diverse abgeleitete\nmeteorologische Größen, die aber nur intern verwendet werden. Mit\ndieser Erweiterung werden sie für die Berechnung im Abschnitt\n`[StdWXCalculate]` und zur Nutzung auf Webseiten und in Diagrammen\nbereitgestellt.\n\nBeachte: WeeWX enthält ein Beispiel, wie Erweiterungen programmiert\nwerden, das einen \"Dampfdruck\" (vapor pressure) bezeichneten\nWert liefert. In Wirklichkeit wird dort aber der Sättigungsdampfdruck\nberechnet. Und die Formel ist auch eine andere als WeeWX sie intern\nbenutzt.\n\nWarnung: Dieser Teil ist noch im Alpha-Status.\n\n#### Werte anzeigen (CheetahGenerator)\n\n* `outSVP`: Sättigungsdampfdruck\n* `outVaporP`: aktueller Dampfdruck\n* `outMxingRatio`: Mischungsverhältnis\n* `outHumAbs`: absolute Luftfeuchtigkeit\n* `outEquiTemp`: Äquivalenttemperatur\n* `outThetaE`: potentielle Äquivalenttemperatur\n* `boilingTemp`: Siedetemperatur des Wassers in Abhängigkeit von\n  der Meereshöhe der Station und dem aktuellen Luftdruck\n\n#### Diagramme (ImageGenerator)\n\nUm Diagramme mit diesen Werten darzustellen, ist es nicht nötig, sie\nin der Datenbank zu speichern. Nur die Ausgangswerte Außentemperatur,\nrelative Luftfeuchtigkeit und Stationsluftdruck müssen vorhanden\nsein. Dann erfolgt die Berechnung live bei der Darstellung des\nDiagramms.\n\nBeispiel: absolute Luftfeuchtigkeit\n\n```\n        [[[dayhumabs]]]\n            unit = gram_per_meter_cubed\n            [[[[outHumAbs]]]]\n```\n\n\u003cimg src=\"dayhumabs.png\" /\u003e\n\n#### Diagramme (Belchertown skin)\n\nBeispiel: relative und absolute Luftfeuchtigkeit in einem Diagramm:\n\n```\n    [[humidity]]\n        title = \"Humidity\"\n        [[[outHumidity]]]\n            name = \"relative\n        [[[outHumAbs]]]\n            name = \"absolute\"\n            yAxis = 1\n            unit = gram_per_meter_cubed\n            [[[[numberFormat]]]]\n                decimals = 1\n```\n\n\u003cimg src=\"luftfeuchtigkeit.png\" /\u003e\n\n### Sonnenenergie\n\n\"radiation\" und \"maxSolarRad\" sind in WeeWX standardmäßig bereitgestellte \nGrößen. Diese Erweiterung stellt den zusätzlichen\n\"aggregation_type\" `energy_integral` zur Verfügung, der die Sonnenenergie\nberechnet, die über den Berechnungszeitraum am Meßort eingegangen ist\nbzw. maximal möglich wäre.\n\nBeachte: Ein Integral ist nicht einfach die Summe der Meßwerte. Details\nsind unten unter Algorithmus beschrieben.\n\n#### Werte anzeigen (CheetahGenerator)\n\n`energy_integral` kann nur zusammen mit Tags für Zeiträume wie etwa\n`$day`, `$yesterday`, `$week`, `$month`, and `$year` benutzt werden.\n\n`energy_integral` wird wie andere \"aggregation_types\", z.B. `min`,\n`max` oder `sum` benutzt.\n\nBeispiel:\n`$yesterday.radiation.energy_integral` zeigt die gesamte Sonnenenergie\nan, die am Vortag eingegangen ist.\n\nUm den Wert in kWh/m^2 anstelle von Wh/m^2 anzuzeigen:\n`$yesterday.radiation.energy_integral.kilowatt_hour_per_meter_squared`\n\n#### Diagramme (ImageGenerator)\n\nIm Abschnitt \\[\\[month_images\\]\\]:\n\n```\n        [[[monthRadiationEnergy]]]\n            line_gap_fraction = 0.04\n            #y_label = \"Wh/m²\"\n            [[[[radiation]]]]\n                label = \"Sonnenenergie (täglich gesamt)\"\n                data_type = radiation\n                aggregate_type = energy_integral\n                aggregate_interval = 86400\n```\n\nDieses Beispiel erzeugt eine Bilddatei namens 'monthRadiationEnergy.png'.\nUm sie darzustellen, muß das entsprechende \\\u003cimg\\\u003e Tag z.B. in index.html.tmpl\neingefügt werden:\n\n```\n\u003cimg src=\"monthRadiationEnergy.png\" /\u003e\n```\n\n#### Diagramme (Belchertown skin)\n\nDie Belchertown Skin benutzt eine andere Graphik-Engine (Highcharts).\nDeshalb ist die Syntax etwas anders.\n\nIm Abschnitt \\[month\\] oder \\[year\\] von graphs.conf:\n\n```\n    [[Sonnenenergie]]\n        title = \"Sonnenenergie (täglich gesamt)\"\n        aggregate_type = energy_integral\n        aggregate_interval = 86400\n        yAxis_label = Energie\n        yAxis_label_unit = \"Wh/m\u0026sup2;\"\n        [[[radiation]]]\n```\n\nEs wird kein \\\u003cimg\\\u003e Tag benötigt.\n\n#### Textdatei\n\nIm \"examples\"-Verzeichnis ist eine Vorlage (template) zu finden, die\neine Textdatei mit den tabellierten Werten von Sonnenenergie und\nSonnenstrahlung erzeugt. Um sie zu nutzen, muß die Datei in das\nSkin-Verzeichnis kopiert werden. In `skin.conf` sind dann folgende\nEintragungen vorzunehmen:\n\n```\n[CheetahGenerator]\n    ...\n    [[SummaryByYear]]\n        ...\n        [[[sun_year]]]\n            encoding = strict_ascii\n            template = sun-%Y.txt.tmpl\n```\n\nDamit wird für jedes Jahr, für das Daten in der Datenbank verfügbar\nsind, eine Datei erzeugt. \n\n### Bodenfeuchte\n\nWeeWX definiert die Einheitengruppe `group_moisture` mit der Einheit\n`centibar`, wohl in Anlehnung an die von Davis Instruments vertriebene\nBodenfeuchte-Bodentemperatur-Einheit 6345. Diese Einheit mißt genaugenommen\nnicht die Feuchte sondern die Saugspannung.\n\nAnstelle der Saugspannung, gemessen in einer Druckeinheit, wird auch\ndie logarithmische Größe pF-Wert benutzt. Diese WeeWX-Erweiterung\nstellt diese Größe als zusätzliche Einheit `pF_value` für\n`group_moisture` bereit. Sie ermöglicht gleichzeitig, auch andere\nDruckeinheiten als nur `centibar` zu nutzen.\n\n### Besondere Zeitspannen\n\nIn der Meteorologie werden Zeitspannen zuweilen nicht von Mitternacht zu Mitternacht\nder geltenenden Zonenzeit gemessen, sondern es werden andere Zeitpunkte zur Trennung\nder Tage verwendet, zum Beispiel 09:00 Uhr. Die folgenden Tags werden genau so wie\n`$hour`, `$day` usw. benutzt.\n\n#### Beliebiges Offset zu UTC\n\n* `$offsethour(data_binding=None, hours_ago=0, dayboundary=None)`\n* `$offsetday(data_binding=None, days_ago=0, dayboundary=None)`\n* `$offsetyesterday(data_binding=None, dayboundary=None)`\n* `$offsetmonth(data_binding=None, months_ago=0, dayboundary=None)`\n* `$offsetyear(data_binding=None, years_ago=0, dayboundary=None)`\n\n#### Mittlere Ortszeit am Ort der Station\n\n* `$LMThour(data_binding=None, hours_ago=0)`\n* `$LMTday(data_binding=None, days_ago=0)`\n* `$LMTyesterday(data_binding=None)`\n* `$LMTmonth(data_binding=None, months_ago=0)`\n* `$LMTyear(data_binding=None, years_ago=0, month_span=None)`\n\nDie Tagesgrenze für diese Tags ist Mitternacht nach der Mittleren\nOrtszeit am Ort der Station. \n\nDer optionale Parameter `month_span` ergibt eine Zeitspanne von \neinigen Monaten innerhalb eines gegebenen Jahres. Zum Beispiel\nist `$LMTyear(month_span=(6,8)).outTemp.avg` die Durchschnittstemperatur\ndes Sommers des aktuellen Jahres. \n`$LMTyear(years_ago=1,month_span=(12,2)).outTemp.max` ist die\nMaximaltemperatur der letzten Windersaison.\n\nDas Attribut `days` kann verwendet werden, um mittels `$LMTmonth` \nbzw. `$LMTyear` eine Schleife über die Tage des Monats bzw. Jahres\nzu bilden.\n\n### Zeitspanne `daylight`\n\n\u003cimg src=\"daylight-timespan.png\" /\u003e\n\n* `$daylight(timestamp=None, data_binding=None, days_ago=0, horizon=None, use_center=False)`: \n\n   Zeitspanne von\n   Sonnenaufgang bis Sonnenuntergang\n\n   Wenn `timestamp` None ist (das ist der Standard), dann ist es die Zeitspanne\n   von Sonnenaufgang bis Sonnenuntergang am gegenwärtigen Tag oder an\n   dem Tag, der `day_ago` Tage zurückliegt.\n\n   Sonst kann `timestamp` ein Wert der Klasse TimespanBinder, eine Zeitspanne\n   oder ein Zeitpunkt sein. `$daylight` ist dann die Zeitspanne \n   von Sonnenaufgang bis Sonnenuntergang an dem Tag, der durch\n   die Zeitspanne oder den Zeitpunkt definiert wird.\n\n* `$LMTmonth(data_binding=None, months_ago=0).daylights(horizon=None, use_center=False)`: \n\n  Folge von täglichen Zeitspannen, pro Tag jeweils die \n  Zeit von Sonnenaufgang zu Sonnenuntergang\n\n* `$LMTyear(data_binding=None, months_ago=0).daylights(horizon=None, use_center=False)`: \n\n  Folge von täglichen Zeitspannen, pro Tag jeweils die\n  Zeit von Sonnenaufgang zu Sonnenuntergang\n\nDie Optionen `horizon` und `use_center` entsprechend denen, die im\n[WeeWX Benutzerhandbuch](https://weewx.com/docs/customizing.htm#Heavenly_bodies)  \nfür `$almanac` beschrieben sind. Sind sie nicht angegeben, werden\nStandardwerte benutzt.\n\nBeispiele:\n\n* Durchschnittstemperatur für die Zeit zwischen Sonnenaufgang und\n  Sonnenuntergang, also während der Zeit des Tageslichtes\n  ```\n  $daylight.outTemp.avg\n  ```\n* Tabelle mit dem Tag des Monats und der zugehörigen \n  Durchschnittstemperatur für die Zeit des Tageslichts des\n  jeweiligen Tages\n  ```\n  #for $span in $LMTmonth.daylights\n  \u003cp\u003e$span.dateTime.format(\"%d\"): $span.outTemp.avg\u003c/p\u003e\n  #end for\n  ```\n* Regen am Tag und in der Nacht\n  ```\n  #from weewx.units import ValueTuple, ValueHelper\n  \u003ctable\u003e\n  \u003ctr\u003e\n  \u003cth\u003eDay\u003c/th\u003e\n  \u003cth\u003eDay rain\u003c/th\u003e\n  \u003cth\u003eNight rain\u003c/th\u003e\n  \u003c/tr\u003e\n  #for $dd in $week.days\n  #set $light=$daylight(timestamp=$dd)\n  #set $nightrain=$dd.rain.sum.raw-$light.rain.sum.raw\n  #set $nightrain_vh=ValueHelper(ValueTuple($nightrain,$unit.unit_type.rain,'group_rain'),formatter=$station.formatter)\n  \u003ctr\u003e\n  \u003ctd\u003e$dd.start.format(\"%d.%m.%Y\")\u003c/td\u003e\n  \u003ctd\u003e$light.rain.sum\u003c/td\u003e\n  \u003ctd\u003e$nightrain_vh\u003c/td\u003e\n  \u003c/tr\u003e\n  #end for\n  \u003c/table\u003e\n  ```\n* Sonnenaufgang, Sonnenuntergang und Tageslichtlänge unter\n  Verwendung der  `timestamp`-Option\n  ```\n  \u003ctable\u003e\n  \u003ctr\u003e\n    \u003cth\u003esunrise\u003c/th\u003e\n    \u003cth\u003esunset\u003c/th\u003e\n    \u003cth\u003edaylight\u003c/th\u003e\n  \u003c/tr\u003e\n  #for $dd in $week.days\n  \u003ctr\u003e\n    \u003ctd\u003e$dd.format(\"%A\")\u003c/td\u003e\n    \u003ctd\u003e$daylight(timestamp=$dd).start\u003c/td\u003e\n    \u003ctd\u003e$daylight(timestamp=$dd).end\u003c/td\u003e\n    \u003ctd\u003e$daylight(timestamp=$dd).length\u003c/td\u003e\n  \u003c/tr\u003e\n  #end for\n  \u003c/table\u003e\n  ```\n\n\n## Algorithmus:\n\n### Grünlandtemperatursumme (GTS)\n\n* Grundlage der Berechnuung ist der Tagesmittelwert der Temperatur. Wenn\n  er größer als 0°C ist, wird er verwendet, anderenfalls nicht.\n* Im Januar wird der Mittelwert mit 0,5 multipliziert.\n* Im Februar wird der Mittelwert mit 0,75 multipliziert.\n* Ab März werden die Mittelwerte unverändert verwendet.\n* Um die Grünlandtemperatursumme eines Tages zu erhalten, werden jetzt\n  alle die Mittelwerte wie vorstehend beschrieben zusammenaddiert.\n* Der Tag, an dem der Wert 200 überschreitet, wird als Beginn des\n  Frühlings betrachtet. Man geht davon aus, daß dann der Boden\n  wieder genügend Stickstoff aufnehmen kann, um nachhaltiges\n  Pflanzenwachstum zu ermöglichen.\n* Die Grünlandtemperatursumme selbst wird bis zum 31. Mai berechnet.\n  Der Endwert wird als Maß für die Qualität des Frühlings angesehen.\n\n### Sonnenenergie\n\nDie Sonnenenergie wird berechnet, indem alle Strahlungsmeßwerte \n(\"radiation\") mit dem jeweiligen Meßintervall (\"interval\") \nmultipliziert. Alle die Produkte aus der Multiplikation werden\nüber den Berechnungszeitraum addiert. Dabei wird der Strahlungswert \nals während dieses\nZeitraumes als konstant angenommen. Das ist nicht hunderprozentig\nkorrekt, aber der Fehler wird als gering genug angenommen, daß man\nihn vernachlässigen kann. \n\nWährend die Einheit der Sonnenstrahlung W/m^2 ist, ist die Einheit\nder Sonnenenergie Wh/m^2 bzw. kWh/m^2.\n\n### Tageslichtzeitraum\n\n`$daylight` verwendet zur Berechnung das Modul von WeeWX, das \nauch von `$almanac` verwendet wird, aber es berücksichtigt dabei\nzusäztliche Informationen.\n\nWährend `$almanac.sunrise` und `$almanac.sunset` Sonnenaufgang und \nSonnenuntergang unter Verwendung der Temperatur und des Luftdrucks \nzur Berechnungszeit ermitteln, berücksichtigt `$daylight` Temperatur \nund Luftdruck der Zeit, für die die Tageslichtzeitspanne berechnet \nwird, soweit Datenbankeinträge für diese Zeit vorhanden sind. Es \nberechnet zunächst ungefähre Sonnenaufgangs- und Sonnenuntergangszeiten \nfür die ICAO-Standardatmosphäre bei 15°C und 1013,25 mbar. Dann wird \ndie tatsächliche Temperatur und der tatsächliche Luftdruck für diese \nbeiden Zeitpunkte ermittelt. Anschließend werden Sonnenaufgang und \nSonnenuntergang erneut berechnet, wobei der Berechnung die jeweilige \nTemperatur und der jeweilige Luftdruck zu Grunde gelegt werden.\n\n`$daylight(timestamp=$X).start` liefert damit für Zeitpunkte X in\nder Vergangenheit eine genauere Sonnenaufgangszeit als\n`$almanac(almanac_time=X).sunrise`. Gleiches gilt mit\n`$daylight(timestamp=$X).end` sinngemäß für den Sonnenuntergang\nund mit `$daylight(timestamp=$X).length` für die Tageslichtlänge.\n(Stand: WeeWX 4.9.2)\n\n## Quellen:\n\n* http://www.groitzsch-wetter.de/HP/green1.html\n* http://www.regionalwetter-sa.de/sa_gruenland.php\n* WeeWX-Beispiel examples/stats.py\n\n## Verweise (Links):\n\n* [Übersicht zu WeeWX auf Deutsch](https://www.woellsdorf-wetter.de/software/weewx.html)\n* [WeeWX](http://weewx.com) - [WeeWX Wiki](https://github.com/weewx/weewx/wiki)\n* [Belchertown Skin](https://obrienlabs.net/belchertownweather-com-website-theme-for-weewx/) - [Belchertown skin Wiki](https://github.com/poblabs/weewx-belchertown/wiki)\n* [Wöllsdorfer Wetter](https://www.woellsdorf-wetter.de)\n* [XTypes performance](https://github.com/weewx/weewx/wiki/XTypes-performance)\n  (Dieser Artikel gibt Hinweise, wenn die HTML-Seiten-Erzeugung zu lange\n  dauert.)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Froe-dl%2Fweewx-gts","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Froe-dl%2Fweewx-gts","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Froe-dl%2Fweewx-gts/lists"}