-
Notifications
You must be signed in to change notification settings - Fork 2
/
README
727 lines (653 loc) · 21.6 KB
/
README
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
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