got a improved version, only got:
Mär 22 19:39:44 raspberrypi weewxd[4803]: INFO weewx.engine: 'pyephem'
detected, extended almanac data is available
Mär 22 19:39:44 raspberrypi weewxd[4803]: DEBUG weewx.engine: Finished
loading service weewx.engine.StdReport
Mär 22 19:39:44 raspberrypi weewxd[4803]: INFO __main__: Starting up weewx
version 5.1.0
Mär 22 19:39:44 raspberrypi weewxd[4803]: INFO weewx.engine: Clock error
is -0.10 seconds (positive is fast)
Mär 22 19:39:44 raspberrypi weewxd[4803]: INFO weewx.engine: Using binding
'wx_binding' to database 'weewx.sdb'
Mär 22 19:39:44 raspberrypi weewxd[4803]: INFO weewx.manager: Starting
backfill of daily summaries
Mär 22 19:39:44 raspberrypi weewxd[4803]: INFO weewx.manager: Daily
summaries up to date
Mär 22 19:39:44 raspberrypi weewxd[4803]: INFO weewx.engine: Starting main
packet loop.
Mär 22 19:39:46 raspberrypi weewxd[4803]: DEBUG weewx.wxservices: Unknown
extensible type 'snow'
Mär 22 19:39:49 raspberrypi weewxd[4803]: DEBUG weewx.wxservices: Unknown
extensible type 'snow'
~
[email protected] schrieb am Samstag, 22. März 2025 um 13:34:28 UTC+1:
> Hello i am trying to calculate value snow out of my measured snowDepth.
> Using tag .diff gives also negative values and also cant be summed for
> month or somthing else. Tried do write xtype but can`t get it running.
> anybody have a hint?
>
>
--
You received this message because you are subscribed to the Google Groups
"weewx-user" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion visit
https://groups.google.com/d/msgid/weewx-user/d77ae407-a51a-4d73-b643-a287fb282885n%40googlegroups.com.
import datetime
import math
import weewx.xtypes
import weewx.units
from weewx.engine import StdService
import weedb
import logging
log = logging.getLogger(__name__)
# Register "snow" with the appropriate unit groups:
class XAggsSnow(weewx.xtypes.XType):
"""
This xtypes extension calculates new snowfall over a fixed 6?hour period,
based on the snowDepth data series from the archive.
It computes the difference between the average of the last 10 data points and
the average of the first 10 data points of the 6?hour interval.
The aggregated value is stored under the observation type "snow", so that it can be
later used in weekly, monthly, or yearly reports (e.g. $year.snow.sum).
"""
# Advertise that this extension supports the observation type "snow":
supported_types = ['snow']
def __init__(self, engine=None, config_dict=None):
# No special initialization is needed
pass
def get_aggregate(self, obs_type, timespan, aggregate_type, db_manager, **option_dict):
fixed_interval = 6 * 3600 # 6 hours in seconds
fixed_timespan = type(timespan)(timespan.start, timespan.start + fixed_interval)
log.debug("Using fixed 6?hour timespan: %s to %s", fixed_timespan.start, fixed_timespan.stop)
try:
series = db_manager.get_series("snowDepth", fixed_timespan, aggregate_type=None, aggregate_interval=fixed_interval)
except Exception as e:
log.exception("Error retrieving series for snowDepth")
raise weewx.UnknownType(aggregate_type)
if not series or len(series) < 20:
log.warning("Not enough data points for 6?hour aggregation: found %s", len(series) if series else 0)
new_snow = None
else:
first10 = [row[1] for row in series[:10] if row[1] is not None]
last10 = [row[1] for row in series[-10:] if row[1] is not None]
if not first10 or not last10:
log.warning("Missing valid data in the first or last 10 records")
new_snow = None
else:
avg_first = sum(first10) / len(first10)
avg_last = sum(last10) / len(last10)
new_snow = avg_last - avg_first
log.debug("Calculated new snow: avg_first=%.2f, avg_last=%.2f, new_snow=%.2f",
avg_first, avg_last, new_snow)
u, g = weewx.units.getStandardUnitType(db_manager.std_unit_system, "snow", "snow")
log.debug("Units: %s, Group: %s", u, g)
return weewx.units.ValueTuple(new_snow, u, g)
class XAggsService(StdService):
"""
WeeWX service for initializing the xtypes extension for new snowfall calculation.
Add this service to the xtype_services section of your weewx.conf.
"""
def __init__(self, engine, config_dict):
super(XAggsService, self).__init__(engine, config_dict)
self.xstats_snow = XAggsSnow(engine, config_dict)
weewx.xtypes.xtypes.append(self.xstats_snow)
def shutDown(self):
weewx.xtypes.xtypes.remove(self.xstats_snow)
weewx.units.obs_group_dict['snow'] = "group_rain"