One thing I forgot, a side effect of the *StdCalibrate* approach is that loop packets and archive records will contain both fields *pm25_2* and *extraTemp2* and they will contain the same data. The GW1000 field map approach will result in *extraTemp2* but not *pm25_2* appearing in loop packets and archive records. Having both fields appear is not a problem as *pm25_2* is essentially ignored as it does not appear in the database schema.
Gary On Tuesday, 22 December 2020 at 16:06:11 UTC+10 gjr80 wrote: > Rainer, > > There are a few approaches that would solve you problem. You could use the > *StdCalibrate* service to simply assign your existing sensor data to a > another field or if you needed to do something beyond the limited > capabilities of the *StdCalibrate* service could write your own custom > service to do what you need. The other alternative for data that comes from > a driver with a sensor/field map is to simply change the sensor/field map > so that the driver places the data concerned into the field you wish to use > right from the start. > > Please note, in the following examples I have used *extraTemp2* as the > field to be recycled, this is a poor choice for a couple of reasons; > firstly it is quite possible a GW1000 user would want to use *extraTemp2* > for additional temperature sensors. Secondly, *extraTemp2* normally holds > temperature data and we will now be storing non-temperature data in the > field, better to use a field that stores the same type of data if possible > (more precisely the same unit type, eg pressure, concentration, speed etc). > In this case the use of WeeWX field *no2* or *pm1_0* may have been better. > > In your case I would customise the GW1000 driver field map. In this > example let's assume you want to store your second PM2.5 sensor in WeeWX > field *extraTemp2* and your GW1000 is emitting data from your second > PM2.5 sensor in field *pm25_2*. In order to change the sensor map for the > GW1000 we need to know two things, what field we are mapping from and what > field we are mapping to. We know we are mapping to *extraTemp2* but we > are not actually mapping from *pm25_2*, we are actually mapping from > GW1000 internal field *pm252* (in many cases the internal GW1000 field is > the same as the field name that appears in the loop packet but some are > different for a number of reasons that I will not go into here). You will > find details of the GW1000 driver default field map and internal field > names in the GW1000 driver Field map wiki entry > <https://github.com/gjr80/weewx-gw1000/wiki/Field-map>. If we want to > alter just a small number of field map entries we can do so using the > *[[field_map_extensions]]* stanza (if we wanted to re-define the entire > field map we would use the *[[field_map]]* stanza) under *[GW1000]* in > *weewx.conf* as follows: > > [GW1000] > .... > [[field_map_extensions]] > extraTemp2 = pm252 > > There is one other step you will need to follow and that is to ensure that > your 'recycled' field is set to the appropriate unit group. All fields in > the WeeWX database schema are assigned to a unit group, that way WeeWX > knows the data in, for example, WeeWX field *outTemp* is a temperature > and not a pressure. In this case, we have used *extraTemp2* and by > default WeeWX will treat any data in that field as temperature. We need to > change that, this can be done in a number of ways but the simplest is to > simply assign the appropriate unit group in the file *extensions.py *( > *extensions.py* is located in */home/weewx/bin/user* or > */usr/share/weewx/user* depending on how you installed WeeWX). In this > case edit *extensions.py* and add the following lines to the bottom of > the file: > > import weewx.units > weewx.units.obs_group_dict['extraTemp2'] = 'group_concentration' > > In this case we have re-assigned field *extraTemp2* to belong to the unit > group *group_concentration* (the WeeWX unit group used for > concentrations). A similar but slightly different approach is covered in > the Assigning a unit group > <http://weewx.com/docs/customizing.htm#Assigning_a_unit_group> section in > the Customization Guide <http://weewx.com/docs/customizing.htm>. > > Note the *extensions.py* modification was necessary because the > destination field and and source data are of different unit groups, if they > were the same then there is no need to change any unit groups. > > Save *weewx.conf* and *extensions.py* and restart WeeWX and the PM2.5 > data from the second sensor will appear in field *extraTemp2* in loop > packets emitted by the GW1000 driver. WeeWX will accumulate this loop data > and *extraTemp2* will be included in archive records synthesised by > WeeWX. You can then use *extraTemp2* in tags in WeeWX report templates. > > That covers the GW1000 field map approach. For the sake of completeness I > will cover the *StdCalibrate* approach as well. > > To achieve the same result with the *StdCalibrate* service we add an > entry under *[StdCalibrate] [[Corrections]]* in *weewx.conf*. In this > case we would use: > > [StdCalibrate] > .... > [[Corrections]] > .... > extraTemp2 = pm25_2 > > Note that in this case we used field *pm25_2* as we are actually using > the field from the loop packet and archive record rather than an internal > field in the GW1000 driver. > > You would also need to make the same addition to *extensions.py* to deal > with the units as was done with the GW1000 field map example above. > > Gary > On Tuesday, 22 December 2020 at 14:44:50 UTC+10 lang....@googlemail.com > wrote: > >> I have several sensors which in my observation do not have a counterpart >> in the extended weewx database schema. >> >> But I still want them stored in the weewx database and have them and >> their history displayed in the web interface under >> http://IP-address/weewx >> >> E.g. there seems to be only one (1) field for PM2.5 sensors, however I've >> got two of the WH41 sensors and the GW1000 provides values for both. >> I already managed to get one of them displayed in the current conditions >> and daily chart page (and also making them show on the weekly, monthly, >> yearly pages is now just a matter a >> >> I suspect that the second simply gets lost as there is no standard field >> in the database to accommodate them. >> >> In a post in the WXforum Gary mentions several approaches how to store >> ("archive" in weewx terminology) such sensor values ("observations") in the >> weewx database. >> https://www.wxforum.net/index.php?topic=34857.0 >> >> "So in summary the following approaches (in order of complexity) are >> available: >> 1. utilise existing but unused database fields >> 2. use a customised database schema by adding to the existing schema >> 3. use a customised database schema by creating a new schema >> 4. use a second database" >> >> I want to go for number 1 but didn't find instructions how (and where) to >> do so. >> >> Can anyone provide guidance here please ? >> >> Thanks and regards >> >> Rainer >> > -- 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 weewx-user+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/weewx-user/8d1779b0-1caa-48b4-9510-4098b373d6f9n%40googlegroups.com.