Appendix - WeeWX 5.0
Author: Tom Keffer <tkeffer@gmail.com>

Skip to content

# Appendix

## Aggregation types

Aggregation types
Aggregation type | Meaning
avg | The average value in the aggregation period.
avg_ge(val) | The number of days where the average value is greater than or equal to val. Aggregation period must be one day or longer. The argument val is a ValueTuple.
avg_le(val) | The number of days where the average value is less than or equal to val. Aggregation period must be one day or longer. The argument val is a ValueTuple.
count | The number of non-null values in the aggregation period.
diff | The difference between the last and first value in the aggregation period.
exists | Returns True if the observation type exists in the database.
first | The first non-null value in the aggregation period.
firsttime | The time of the first non-null value in the aggregation period.
gustdir | The direction of the max gust in the aggregation period.
has_data | Returns True if the observation type exists in the database and is non-null.
last | The last non-null value in the aggregation period.
lasttime | The time of the last non-null value in the aggregation period.
max | The maximum value in the aggregation period.
maxmin | The maximum daily minimum in the aggregation period. Aggregation period must be one day or longer.
maxmintime | The time of the maximum daily minimum.
maxsum | The maximum daily sum in the aggregation period. Aggregation period must be one day or longer.
maxsumtime | The time of the maximum daily sum.
maxtime | The time of the maximum value.
max_ge(val) | The number of days where the maximum value is greater than or equal to val. Aggregation period must be one day or longer. The argument val is a ValueTuple.
max_le(val) | The number of days where the maximum value is less than or equal to val. Aggregation period must be one day or longer. The argument val is a ValueTuple.
meanmax | The average daily maximum in the aggregation period. Aggregation period must be one day or longer.
meanmin | The average daily minimum in the aggregation period. Aggregation period must be one day or longer.
min | The minimum value in the aggregation period.
minmax | The minimum daily maximum in the aggregation period. Aggregation period must be one day or longer.
minmaxtime | The time of the minimum daily maximum.
minsum | The minimum daily sum in the aggregation period. Aggregation period must be one day or longer.
minsumtime | The time of the minimum daily sum.
mintime | The time of the minimum value.
min_ge(val) | The number of days where the minimum value is greater than or equal to val. Aggregation period must be one day or longer. The argument val is a ValueTuple.
min_le(val) | The number of days where the minimum value is less than or equal to val. Aggregation period must be one day or longer. The argument val is a ValueTuple.
not_null | Returns truthy if any value over the aggregation period is non-null.
rms | The root mean square value in the aggregation period.
sum | The sum of values in the aggregation period.
sum_ge(val) | The number of days where the sum of value is greater than or equal to val. Aggregation period must be one day or longer. The argument val is a ValueTuple.
sum_le(val) | The number of days where the sum of value is less than or equal to val. Aggregation period must be one day or longer. The argument val is a ValueTuple.
tderiv | The time derivative between the last and first value in the aggregation period. This is the difference in value divided by the difference in time.
vecavg | The vector average speed in the aggregation period.
vecdir | The vector averaged direction during the aggregation period.

## Units

WeeWX offers three different unit systems:

The standard unit systems used within WeeWX
Name | Encoded value | Note
US | 0x01 | U.S. Customary
METRICWX | 0x11 | Metric, with rain related measurements in mm and speeds in m/s
METRIC | 0x10 | Metric, with rain related measurements in cm and speeds in km/hr

The table below lists all the unit groups, their members, which units are options for the group, and what the defaults are for each standard unit system.

Unit groups, members and options
Group | Members | Unit options | US | METRICWX | METRIC
group_altitude | altitude cloudbase | foot meter | foot | meter | meter
group_amp |  | amp | amp | amp | amp
group_angle |  | degree_angle radian | degree_angle | degree_angle | degree_angle
group_boolean |  | boolean | boolean | boolean | boolean
group_concentration | no2 pm1_0 pm2_5 pm10_0 | microgram_per_meter_cubed | microgram_per_meter_cubed | microgram_per_meter_cubed | microgram_per_meter_cubed
group_count | leafWet1 leafWet2 lightning_disturber_count lightning_noise_count lightning_strike_count | count | count | count | count
group_data |  | byte bit | byte | byte | byte
group_db | noise | dB | dB | dB | dB
group_delta_time | daySunshineDur rainDur sunshineDurDoc | second minute hour day | second | second | second
group_degree_day | cooldeg heatdeg growdeg | degree_F_day degree_C_day | degree_F_day | degree_C_day | degree_C_day
group_direction | gustdir vecdir windDir windGustDir | degree_compass | degree_compass | degree_compass | degree_compass
group_distance | windrun lightning_distance | mile km | mile | km | km
group_energy |  | kilowatt_hour mega_joule watt_hour watt_second | watt_hour | watt_hour | watt_hour
group_energy2 |  | kilowatt_hour watt_hour watt_second | watt_second | watt_second | watt_second
group_fraction | co co2 nh3 o3 pb so2 | ppm | ppm | ppm | ppm
group_frequency |  | hertz | hertz | hertz | hertz
group_illuminance | illuminance | lux | lux | lux | lux
group_interval | interval | minute | minute | minute | minute
group_length |  | inch cm | inch | cm | cm
group_moisture | soilMoist1 soilMoist2 soilMoist3 soilMoist4 | centibar | centibar | centibar | centibar
group_percent | cloudcover extraHumid1 extraHumid2 inHumidity outHumidity pop rxCheckPercent snowMoisture | percent | percent | percent | percent
group_power |  | kilowatt watt | watt | watt | watt
group_pressure | barometer altimeter pressure | inHg mbar hPa kPa | inHg | mbar | mbar
group_pressurerate | barometerRate altimeterRate pressureRate | inHg_per_hour mbar_per_hour hPa_per_hour kPa_per_hour | inHg_per_hour | mbar_per_hour | mbar_per_hour
group_radiation | maxSolarRad radiation | watt_per_meter_squared | watt_per_meter_squared | watt_per_meter_squared | watt_per_meter_squared
group_rain | rain ET hail snowDepth snowRate | inch cm mm | inch | mm | cm
group_rainrate | rainRate hailRate | inch_per_hour cm_per_hour mm_per_hour | inch_per_hour | mm_per_hour | cm_per_hour
group_speed | wind windGust windSpeed windgustvec windvec | mile_per_hour km_per_hour knot meter_per_second beaufort | mile_per_hour | meter_per_second | km_per_hour
group_speed2 | rms vecavg | mile_per_hour2 km_per_hour2 knot2 meter_per_second2 | mile_per_hour2 | meter_per_second2 | km_per_hour2
group_temperature | appTemp dewpoint extraTemp1 extraTemp2 extraTemp3 heatindex heatingTemp humidex inTemp leafTemp1 leafTemp2 outTemp soilTemp1 soilTemp2 soilTemp3 soilTemp4 windchill THSW | degree_C degree_F degree_E degree_K | degree_F | degree_C | degree_C
group_time | dateTime | unix_epoch dublin_jd | unix_epoch | unix_epoch | unix_epoch
group_uv | UV | uv_index | uv_index | uv_index | uv_index
group_volt | consBatteryVoltage heatingVoltage referenceVoltage supplyVoltage | volt | volt | volt | volt
group_volume |  | cubic_foot gallon liter | gallon | liter | liter
group_NONE | NONE | NONE | NONE | NONE | NONE

## Durations

Rather than give a value in seconds, many durations can be expressed using a shorthand notation. For example, in a skin configuration file `skin.conf`, a value for `aggregate_interval` can be given as either

    aggregate_interval = 3600

or

    aggregate_interval = 1h

The same notation can be used in trends. For example:

    <p>Barometer trend over the last 2 hours: $trend(time_delta='2h').barometer</p>

Here is a summary of the notation:

Example | Meaning
--- | ---
`10800` | 3 hours
`3h` | 3 hours
`1d` | 1 day
`2w` | 2 weeks
`1m` | 1 month
`1y` | 1 year
`hour` | Synonym for `1h`
`day` | Synonym for `1d`
`week` | Synonym for `1w`
`month` | Synonym for `1m`
`year` | Synonym for `1y`

## Class `ValueTuple`

A value, along with the unit it is in, can be represented by a 3-way tuple called a "value tuple". They are used throughout WeeWX. All WeeWX routines can accept a simple unadorned 3-way tuple as a value tuple, but they return the type `ValueTuple`. It is useful because its contents can be accessed using named attributes. You can think of it as a unit-aware value, useful for converting to and from other units.

The following attributes, and their index, are present:

Index | Attribute | Meaning
0 | value | The data value(s). Can be a series (e.g., [20.2, 23.2, ...]) or a scalar (e.g., 20.2)
1 | unit | The unit it is in ("degree_C")
2 | group | The unit group ("group_temperature")

It is valid to have a datum value of `None`.

It is also valid to have a unit type of `None` (meaning there is no information about the unit the value is in). In this case, you won't be able to convert it to another unit.

Here are some examples:

    from weewx.units import ValueTuple

    freezing_vt = ValueTuple(0.0, "degree_C", "group_temperature")
    body_temperature_vt = ValueTuple(98.6, "degree_F", group_temperature")
    station_altitude_vt = ValueTuple(120.0, "meter", "group_altitude")

## Class `ValueHelper`

Class `ValueHelper` contains all the information necessary to do the proper formatting of a value, including a unit label.

### Instance attribute

#### ValueHelper.value_t

Returns the `ValueTuple` instance held internally.

### Instance methods

#### ValueHelper.str()

Formats the value as a string, including a unit label, and returns it.

#### ValueHelper.format(format_string=None, None_string=None, add_label=True, localize=True)

Format the value as a string, using various specified options, and return it. Unless otherwise specified, a label is included.

Its parameters:

- `format_string` A string to be used for formatting. It must include one, and only one, format specifier.

- `None_string` In the event of a value of Python `None`, this string will be substituted. If `None`, then a default string from `skin.conf` will be used.

- `add_label` If truthy, then an appropriate unit label will be attached. Otherwise, no label is attached.

- `localize` If truthy, then the results will be localized. For example, in some locales, a comma will be used as the decimal specifier.