Skip to content

modified Weewx Seasons skin and Ecowitt stations/devices support with all available sensors (and DAVIS Weatherlink Live, VantagePro, AirLink too)

Notifications You must be signed in to change notification settings

WernerKr/Ecowitt-or-DAVIS-stations-and-Season-skin

Repository files navigation

Based on the new structure of the Seasons skin (sensor management in array) I have the Seasons Skin
extended accordingly so that all possible sensor data of the Ecowitt stations/devices are displayed.
There is also the option of displaying the air quality index for AQI EPA (US) or AQI EEA (EU).
It currently contains all database values from the weewx_extended database schema
and now Ecowitt database schema weewx_ecowitt and loop values of
Ecowitt (Interceptor: ecowitt-client) or GW1000 driver, VantagePro, Davis Weatherlink Live, Davis AirLink
In order to get all data from the Ecowitt stations/devices, you have to use my modified interceptor driver
or GW1000 driver.

My array offers these possibilities:
  at current.inc example for outside temperature:
  ('outTemp', '#e85d0d', 'current', '1')
  or
  ('outTemp','#e85d0d','day','1')
  (1:value, 2:labelcolor, ''=black, 3:current or day or yesterday or aqiepa or aqieea or trend or deltatime or wx_binding?, 4:'1')
  3: = current -> default
  3: = day -> show avages of the day
  3: = yesterday -> show avages of the last day
  3: = 3:yesterday -> at 1:radiation  -> radiation.energy_integral.kilowatt_hour_per_meter_squared for yesterday and day
  3: = trend -> show additonal to value the 24hr trend or 3 hr trend (barometer)
  3: = deltatime -> for sunShineDur or rainDur or hailDur
  3: = 'wx_binding?' -> example: 'wx_binding3, WS90' Data are from the Database settings 'wx_binding3' and here additional to the label is ' WS90' added
  3: = 'daywx_bindig?' or 'trendwx_bindging?' are also allowed. example: 'daywx_binding3, Ultrasonic'
  3: = aqiepa -> computes pm2_5 Air quality Index EPA
  3: = aqieea -> computes pm2_5 Air quality Index EEA
  4: = 1 show, 4: = 0 don't show, although values are available, 4: = 3 Textinformation or Separation

at hilo.inc and statistics.inc
  observ-Array -> (1:value, 2:labelcolor, ''=black, 3:''=min&max or max or sum or wx_binding?, 4:don't show, although values are available = 0)
  ('outTemp', '#e85d0d', '', '1'),
  1: value
  2: label color, if '' = black
  3: which evaluation , '' (= empty = min and max), or sum, or only max
  3: ='wx_binding?' or 'sumwx_binding?' or 'maxwx_binding?' or 'minwx_binding?' or 'avgwx_binding?' or 'maxwx_binding?, Text' or ...
  -> example: 'wx_binding3, WS90' or 'maxwx_binding3, WS90' Data are from the Database settings 'wx_binding3' and here additional to the label is ' WS90' added
  4: show if available, if 0 never show (e.g. for indoor temperature)
  labelcolor can be general disabled -> #set $usefontcolor = 0


In addition, the skin also takes into account that the Ecowitt stations / devices use the unit "%" for the soil moisture values
  and not "cb" as specified centrally in Weewx
  In general, a label color can be used with
  #set $usefontcolor = 0
  be switched off
  The order in the array is also the display position. 

Files for this
  https://www.pc-wetterstation.de/weewx/skins_Seasons.zip
 
Example for the skin:
WeatherLinkLiveUDP: 	https://www.pc-wetterstation.de/wetter/weewx
GW1000: 		https://www.pc-wetterstation.de/wetter/weewx1
ecowitt-client: 	https://www.pc-wetterstation.de/wetter/weewx2
VantagePro: https://www.pc-wetterstation.de/wetter/weewx3
Interceptor&GW1000:  https://www.pc-wetterstation.de/wetter/weewx4

Calculation of the sunshine duration and now too rain duration:

Which, however, was modified by me https://www.pc-wetterstation.de/weewx/user/sunrainduration.zip
and the configuration is done via the weewx.conf and this entry:

Code:
[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

... and if you want to rummage through the files, there are even more changes from me:
https://www.pc-wetterstation.de/weewx

################################################# ###############################################

There is also a complete installation file for the Interceptor driver and GW1000 driver (both) with the
Ecowitt extension and the Seasons skin change
https://www.pc-wetterstation.de/weewx/weewx-gw1000_interceptor.zip

Download the file, upload it to the RaspPi, change to the directory where uploaded to and with
sudo wee_extension --install=weewx-gw1000_interceptor.zip


Only Interceptor: 
Jan 2024:
supports soilad1 - soilad8 and heap
If you will track the heap values - I use the unused value "pb" from the extended database for this
So add this in the weeewx.conf file to
[StdCalibrate]
    [[Corrections]]
      pb = heap if heap is not None else None 

May/June 2024:
Support Co2in, PM1, PM4
WS85

https://www.pc-wetterstation.de/weewx/weewx-interceptor.zip
sudo wee_extension --install=weewx-interceptor.zip

 or
sudo wee_extension --install=/%path_where_file_located%/weewx-???.zip
to install.

Both use a new database schema: 
wview_ecowitt.py

An existing database can also be expanded with these shell scripts:
  -> is very likely the easiest way
 
https://www.pc-wetterstation.de/weewx/add_ecowitt_to_wview_database.zip
https://www.pc-wetterstation.de/weewx/add_ecowitt_to_wview_extended_database.zip

  The new data fields are added to the existing database and the old ones
  Data are retained.
  If you don't work with the standard configuration (/etc/weewx/weewx.conf), you have to
  adjust the --config=/etc/weewx/weewx.conf entry accordingly.

################################################# ################################################
In weewx.conf you can/should use the existing entry (only useful with a completely new installation) for 
Code:
[DataBindings]
     [[wx_binding]]
        schema = schemas.wview.schema
        "#schema" = schemas.wview_ecowitt.schema # -> is entered in this way by the installation!
# Change to
        #schema = schemas.wview.schema
        schema = schemas.wview_ecowitt.schema

Possibly also the database name from weewx.sdb to weewx_ecowitt.sdb
to change.
Code:
[Databases]
     # A SQLite database is simply a single file
     [[archive_sqlite]]
         database_name = weewx.sdb
         database_type = SQLite
         "#database_name" = weewx_ecowitt.sdb
Since the installation routine does not change any existing entries, one must in weewx.conf
adapt a few entries

Signal assignment with GW1000 driver (the interceptor cannot evaluate the signals)
The weewx-gw1000.zip installation routine adds these entries to weewx.conf:
[StdCalibrate]
    [[Corrections]]
        #rxCheckPercent = ws80_sig * 25 if ws80_sig is not None else None
        #rxCheckPercent = wh24_sig * 25 if wh24_sig is not None else None
        #rxCheckPercent = wh25_sig * 25 if wh25_sig is not None else None
        #rxCheckPercent = wh65_sig * 25 if wh65_sig is not None else None
        #rxCheckPercent = wh68_sig * 25 if wh68_sig is not None else None
        #signal1 = wh24_sig * 25 if wh24_sig is not None else None
        #signal2 = wh31_ch1_sig * 25 if wh31_ch1_sig is not None else None
        #signal3 = wh34_ch1_sig * 25 if wh34_ch1_sig is not None else None
        #signal4 = wh40_sig * 25 if wh40_sig is not None else None
        #signal5 = wh45_sig * 25 if wh45_sig is not None else None
        #signal6 = wh57_sig * 25 if wh57_sig is not None else None
        #signal7 = wh51_ch1_sig * 25 if wh51_ch1_sig is not None else None
        #signal8 = wh35_ch1_sig * 25 if wh35_ch1_sig is not None else None

So are not active and is an example:
Here everyone can choose for themselves which signals should be assigned to which Ecowitt sensor sig.
signal 1..8 belongs to the database values, with the assignment they are also recorded for evaluation.

Code:
[Station]

# Set to type of station hardware. There must be a corresponding stanza
# in this file with a 'driver' parameter indicating the driver to be used.
  station_type = Interceptor		# with interceptor driver
  #station_type = gw1000			# with GW1000 driver

[StdWXCalculate]
  [[WXXTypes]]
    [[[maxSolarRad]]]
      algorithm = rs
      atc = 0.9
      
  [[Calculations]]
        GTS = software, archive
        GTSdate = software, archive
        utcoffsetLMT = software, archive
        dayET = prefer_hardware, archive
        ET24 = prefer_hardware, archive
        yearGDD = software, archive
        seasonGDD = software, archive
 
[Engine]
    # The following section specifies which services should be run and in what order.
    # Using the GW1000 as data-service, 
    # added user.sunduration.SunshineDuration for calculation sunshinehours
    # addet user.GTS.GTSService for calculation dayET, ET24, GTS, GTSdate and other
    [[Services]]
        data_services = user.gw1000.Gw1000Service
        process_services = weewx.engine.StdConvert, weewx.engine.StdCalibrate, weewx.engine.StdQC, weewx.wxservices.StdWXCalculate, user.sunduration.SunshineDuration
        xtype_services = weewx.wxxtypes.StdWXXTypes, weewx.wxxtypes.StdPressureCooker, weewx.wxxtypes.StdRainRater, weewx.wxxtypes.StdDelta, user.GTS.GTSService

[GW1000]
  driver = user.gw1000
  # This section is for the GW1000 API driver.
  
  # How often to poll the GW1000 API, default is every 20 seconds:
  poll_interval = 20

  ip_address = ???.???.???.???	# GW2000
  port = 45000

  #wh32 = True
  #ignore_legacy_wh40_battery = True
  #show_all_batt = False
  log_unknown_fields = True
  #debug_rain = False
  #debug_wind = False
  #debug_loop = False
  #debug_sensors = False
     
 [[field_map_extensions]]
   batteryStatus1 = wh31_ch1_batt
   batteryStatus2 = wh31_ch2_batt
   batteryStatus3 = wh31_ch3_batt
   batteryStatus4 = wh31_ch4_batt
   batteryStatus5 = wh31_ch5_batt
   batteryStatus6 = wh31_ch6_batt
   batteryStatus7 = wh31_ch7_batt
   batteryStatus8 = wh31_ch8_batt
        
   lightning_distance = lightningdist
   lightning_disturber_count = lightningdettime
   lightning_Batt = wh57_batt
        
   co2_Temp = temp17
   co2_Hum = humid17
   pm10_0 = pm10
   pm2_5 = pm255
   co2_Batt = wh45_batt
        
   pm25_1 = pm251
   pm25_2 = pm252
   pm25_3 = pm253
   pm25_4 = pm254
   pm25_Batt1 = wh41_ch1_batt
   pm25_Batt2 = wh41_ch2_batt
   pm25_Batt3 = wh41_ch3_batt
   pm25_Batt4 = wh41_ch4_batt
        
   soilTemp1 = temp9
   soilTemp2 = temp10
   soilTemp3 = temp11
   soilTemp4 = temp12
   soilTemp5 = temp13
   soilTemp6 = temp14
   soilTemp7 = temp15
   soilTemp8 = temp16
   soilTempBatt1 = wn34_ch1_batt
   soilTempBatt2 = wn34_ch2_batt
   soilTempBatt3 = wn34_ch3_batt
   soilTempBatt4 = wn34_ch4_batt
   soilTempBatt5 = wn34_ch5_batt
   soilTempBatt6 = wn34_ch6_batt
   soilTempBatt7 = wn34_ch7_batt
   soilTempBatt8 = wn34_ch8_batt
        
   soilMoistBatt1 = wh51_ch1_batt
   soilMoistBatt2 = wh51_ch2_batt
   soilMoistBatt3 = wh51_ch3_batt
   soilMoistBatt4 = wh51_ch4_batt
   soilMoistBatt5 = wh51_ch5_batt
   soilMoistBatt6 = wh51_ch6_batt
   soilMoistBatt7 = wh51_ch7_batt
   soilMoistBatt8 = wh51_ch8_batt
        
   leak_1 = leak1
   leak_2 = leak2
   leak_3 = leak3
   leak_4 = leak4
        
   leak_Batt1 = wh55_ch1_batt
   leak_Batt2 = wh55_ch2_batt
   leak_Batt3 = wh55_ch3_batt
   leak_Batt4 = wh55_ch4_batt
        
   leafWetBatt1 = wn35_ch1_batt
   leafWetBatt2 = wn35_ch2_batt
   leafWetBatt3 = wn35_ch3_batt
   leafWetBatt4 = wn35_ch4_batt
   leafWetBatt5 = wn35_ch5_batt
   leafWetBatt6 = wn35_ch6_batt
   leafWetBatt7 = wn35_ch7_batt
   leafWetBatt8 = wn35_ch8_batt
        
   rainBatteryStatus = wh40_batt
   windBatteryStatus = ws80_batt
   hailBatteryStatus = ws90_batt
   #ws80_batt = ws80_batt
   #ws90_batt = ws90_batt

   outTempBatteryStatus = wh24_batt
   #  outTempBatteryStatus = wh26_batt
   #  outTempBatteryStatus = wh65_batt
   #  outTempBatteryStatus = wh68_batt
   inTempBatteryStatus = wh25_batt
        
   consBatteryVoltage = ws1900batt
        
   maxdailygust = daymaxwind
   pm25_24h_co2 = pm255_24h_avg
   pm10_24h_co2 = pm10_24h_avg
   pm25_avg_24h_ch1 = pm251_24h_avg
   pm25_avg_24h_ch2 = pm252_24h_avg
   pm25_avg_24h_ch3 = pm253_24h_avg
   pm25_avg_24h_ch4 = pm254_24h_avg
        
   lightningcount = lightningcount
        
   co2_24h = co2_24h_avg
   barometer = relbarometer
        
   rainrate = rainrate
   totalRain = raintotal
   eventRain = rainevent
   hourRain = t_rainhour
   dayRain = t_rainday
   weekRain = t_rainweek
   monthRain = t_rainmonth
   yearRain = t_rainyear

   rain_piezo = p_rain 
   erain_piezo = p_rainevent
   rrain_piezo = p_rainrate
   hrain_piezo = p_hourrain
   drain_piezo = p_rainday
   wrain_piezo = p_rainweek
   mrain_piezo = p_rainmonth
   yrain_piezo = p_rainyear

   hail = p_rain
   hailRate = p_rainrate

   wh24_sig = wh24_sig
   wh25_sig = wh25_sig
   wh31_ch1_sig = wh31_ch1_sig
   ws80_sig = ws80_sig
   ws90_sig = ws90_sig
   wh40_sig = wh40_sig
   wh45_sig = wh45_sig
   wh57_sig = wh57_sig
   wh51_ch1_sig = wh51_ch1_sig
   wn35_ch1_sig = wn35_ch1_sig
   wn34_ch1_sig = wn34_ch1_sig

   rain_source = rain_source
   rain_day_reset = rain_day_reset
   rain_week_reset = rain_week_reset
   rain_annual_reset = rain_annual_reset
   raingain = raingain
   gain0 = gain0
   gain1 = gain1
   gain2 = gain2
   gain3 = gain3
   gain4 = gain4
   gain5 = gain5
   gain6 = gain6
   gain7 = gain7
   gain8 = gain8
   gain9 = gain9

##############################################################################

[Interceptor]
    # This section is for the network traffic interceptor driver.
    
    # The driver to use:
    driver = user.interceptor
    
    # Specify the hardware device to capture.  Options include:
    #   acurite-bridge - acurite internet bridge, smarthub, or access
    #   observer - fine offset WH2600/HP1000/HP1003, ambient WS2902
    #   lw30x - oregon scientific LW301/LW302
    #   lacrosse-bridge - lacrosse GW1000U/C84612 internet bridge
    #   ecowitt-client - any hardware that uses the ecowitt protocol
    #   wu-client - any hardware that uses the weather underground protocol
    device_type = ecowitt-client
    port = 8575
    iface = eth0
    #iface = wlan0 
    
  [[sensor_map_extensions]]
   # mappings now in the Interceptor.py driver
   #  outTempBatteryStatus = wh26batt

##############################################################################

# Options for extension 'ecowitt-client'
[Accumulator]

   [[model]]
        accumulator = firstlast
        extractor = last
   [[stationtype]]
        accumulator = firstlast
        extractor = last

    [[gain0]]
        extractor = last
    [[gain1]]
        extractor = last
    [[gain2]]
        extractor = last
    [[gain3]]
        extractor = last
    [[gain4]]
        extractor = last
    [[gain5]]
        extractor = last

    [[lightning_distance]]
        extractor = last
    [[lightning_strike_count]]
        extractor = sum
    [[lightning_last_det_time]]
        extractor = last
    [[lightningcount]]
        extractor = last

    [[daymaxwind]]
        extractor = last
    [[windspdmph_avg10m]]
        extractor = last
    [[winddir_avg10m]]
        extractor = last

    [[rainRate]]
        extractor = max
    [[stormRain]]
        extractor = last
    [[hourRain]]
        extractor = last
    [[dayRain]]
        extractor = last
    [[weekRain]]
        extractor = last
    [[monthRain]]
        extractor = last
    [[yearRain]]
        extractor = last
    [[totalRain]]
        extractor = last

    [[rrain_piezo]]
        extractor = max
    [[erain_piezo]]
        extractor = last
    [[hrain_piezo]]
        extractor = last
    [[drain_piezo]]
        extractor = last
    [[wrain_piezo]]
        extractor = last
    [[mrain_piezo]]
        extractor = last
    [[yrain_piezo]]
        extractor = last

    [[p_rainrate]]
        extractor = max
    [[p_eventrain]]
        extractor = last
    [[p_hourrain]]
        extractor = last
    [[p_dayrain]]
        extractor = last
    [[p_weekrain]]
        extractor = last
    [[p_monthrain]]
        extractor = last
    [[p_yearrain]]
        extractor = last

    [[dayHail]]
        extractor = last
    [[hail]]
        extractor = sum

    [[pm2_51_24hav]]
        extractor = last
    [[pm2_52_24hav]]
        extractor = last
    [[pm2_53_24hav]]
        extractor = last
    [[pm2_54_24hav]]
        extractor = last
    [[24havpm255]]
        extractor = last

    [[pm2_51_24h_avg]]
        extractor = last
    [[pm2_52_24h_avg]]
        extractor = last
    [[pm2_53_24h_avg]]
        extractor = last
    [[pm2_54_24h_avg]]
        extractor = last
    [[pm2_55_24h_avg]]
        extractor = last
    [[pm10_24h_avg]]
        extractor = last
    [[co2_24h_avg]]
        extractor = last

    [[wh25_batt]]
        extractor = last
    [[wh26_batt]]
        extractor = last
    [[wh31_ch1_batt]]
        extractor = last
    [[wh31_ch2_batt]]
        extractor = last
    [[wh31_ch3_batt]]
        extractor = last
    [[wh31_ch4_batt]]
        extractor = last
    [[wh31_ch5_batt]]
        extractor = last
    [[wh31_ch6_batt]]
        extractor = last
    [[wh31_ch7_batt]]
        extractor = last
    [[wh31_ch8_batt]]
        extractor = last
    [[wn35_ch1_batt]]
        extractor = last
    [[wn35_ch2_batt]]
        extractor = last
    [[wn35_ch3_batt]]
        extractor = last
    [[wn35_ch4_batt]]
        extractor = last
    [[wn35_ch5_batt]]
        extractor = last
    [[wn35_ch6_batt]]
        extractor = last
    [[wn35_ch7_batt]]
        extractor = last
    [[wn35_ch8_batt]]
        extractor = last
    [[wh40_batt]]
        extractor = last
    [[wh41_ch1_batt]]
        extractor = last
    [[wh41_ch2_batt]]
        extractor = last
    [[wh41_ch3_batt]]
        extractor = last
    [[wh41_ch4_batt]]
        extractor = last
    [[wh45_batt]]
        extractor = last
    [[wh51_ch1_batt]]
        extractor = last
    [[wh51_ch2_batt]]
        extractor = last
    [[wh51_ch3_batt]]
        extractor = last
    [[wh51_ch4_batt]]
        extractor = last
    [[wh51_ch5_batt]]
        extractor = last
    [[wh51_ch6_batt]]
        extractor = last
    [[wh51_ch7_batt]]
        extractor = last
    [[wh51_ch8_batt]]
        extractor = last
    [[wh51_ch9_batt]]
        extractor = last
    [[wh51_ch10_batt]]
        extractor = last
    [[wh51_ch11_batt]]
        extractor = last
    [[wh51_ch12_batt]]
        extractor = last
    [[wh51_ch13_batt]]
        extractor = last
    [[wh51_ch14_batt]]
        extractor = last
    [[wh51_ch15_batt]]
        extractor = last
    [[wh51_ch16_batt]]
        extractor = last
    [[wh55_ch1_batt]]
        extractor = last
    [[wh55_ch2_batt]]
        extractor = last
    [[wh55_ch3_batt]]
        extractor = last
    [[wh55_ch4_batt]]
        extractor = last
    [[wh57_batt]]
        extractor = last
    [[wh65_batt]]
        extractor = last
    [[wh68_batt]]
        extractor = last
    [[ws80_batt]]
        extractor = last
    [[ws90_batt]]
        extractor = last
    [[ws90cap_volt]]
        extractor = last
    [[ws1900batt]]
        extractor = last

    [[wh25_sig]]
        extractor = last
    [[wh26_sig]]
        extractor = last
    [[wh31_ch1_sig]]
        extractor = last
    [[wh31_ch2_sig]]
        extractor = last
    [[wh31_ch3_sig]]
        extractor = last
    [[wh31_ch4_sig]]
        extractor = last
    [[wh31_ch5_sig]]
        extractor = last
    [[wh31_ch6_sig]]
        extractor = last
    [[wh31_ch7_sig]]
        extractor = last
    [[wh31_ch8_sig]]
        extractor = last
    [[wn34_ch1_sig]]
        extractor = last
    [[wn34_ch2_sig]]
        extractor = last
    [[wn34_ch3_sig]]
        extractor = last
    [[wn34_ch4_sig]]
        extractor = last
    [[wn34_ch5_sig]]
        extractor = last
    [[wn34_ch6_sig]]
        extractor = last
    [[wn34_ch7_sig]]
        extractor = last
    [[wn34_ch8_sig]]
        extractor = last
    [[wn35_ch1_sig]]
        extractor = last
    [[wn35_ch2_sig]]
        extractor = last
    [[wn35_ch3_sig]]
        extractor = last
    [[wn35_ch4_sig]]
        extractor = last
    [[wn35_ch5_sig]]
        extractor = last
    [[wn35_ch6_sig]]
        extractor = last
    [[wn35_ch7_sig]]
        extractor = last
    [[wn35_ch8_sig]]
        extractor = last
    [[wh40_sig]]
        extractor = last
    [[wh41_ch1_sig]]
        extractor = last
    [[wh41_ch2_sig]]
        extractor = last
    [[wh41_ch3_sig]]
        extractor = last
    [[wh41_ch4_sig]]
        extractor = last
    [[wh45_sig]]
        extractor = last
    [[wh51_ch1_sig]]
        extractor = last
    [[wh51_ch2_sig]]
        extractor = last
    [[wh51_ch3_sig]]
        extractor = last
    [[wh51_ch4_sig]]
        extractor = last
    [[wh51_ch5_sig]]
        extractor = last
    [[wh51_ch6_sig]]
        extractor = last
    [[wh51_ch7_sig]]
        extractor = last
    [[wh51_ch8_sig]]
        extractor = last
    [[wh51_ch9_sig]]
        extractor = last
    [[wh51_ch10_sig]]
        extractor = last
    [[wh51_ch11_sig]]
        extractor = last
    [[wh51_ch12_sig]]
        extractor = last
    [[wh51_ch13_sig]]
        extractor = last
    [[wh51_ch14_sig]]
        extractor = last
    [[wh51_ch15_sig]]
        extractor = last
    [[wh51_ch16_sig]]
        extractor = last
    [[wh55_ch1_sig]]
        extractor = last
    [[wh55_ch2_sig]]
        extractor = last
    [[wh55_ch3_sig]]
        extractor = last
    [[wh55_ch4_sig]]
        extractor = last
    [[wh57_sig]]
        extractor = last
    [[wh65_sig]]
        extractor = last
    [[wh68_sig]]
        extractor = last
    [[ws80_sig]]
        extractor = last
    [[ws90_sig]]
        extractor = last

About

modified Weewx Seasons skin and Ecowitt stations/devices support with all available sensors (and DAVIS Weatherlink Live, VantagePro, AirLink too)

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published