Thank you Gary for all these detailed explanations! Thank you also for your patience... Thanks to you I was finally able to finish integrating the data into the weewx database as I wanted! Without your precious help, I would* NEVER* have gotten there!
Just one last quick question, if weewx is updated, do you know if the /usr/share/weewx/user/extensions.py file is modified or if it is kept as is? Thanks a lot again Gary! Le lundi 18 septembre 2023 à 14:05:53 UTC+2, gjr80 a écrit : > Some answers/guidance below. > > Gary > > On Monday, 18 September 2023 at 00:55:03 UTC+10 remy.l...@gmail.com wrote: > > However, I have a new question as I haven't been able to understand > exactly the weewx documentation on this subject. I clearly saw that the > case of adding electricity consumption to the database had been processed > but I did not understand the entire explanation given. > > To put it simply, I retrieve data in CSV format which I integrate at > regular intervals into the weewx database using wee_import.py (my weather > station does not have a USB output and the data is retrieved from AWEKAS). > To the weather data, I would have liked to add for the period considered: > - CPU load data (unitless) > - The total and used memory of the Raspberry (kB unit) > - The total and used capacity of the SSD (Gb unit) > - Power consumption (Watt unit) > - Water consumption (unit per liter) > > I created the fields I needed in the existing WeeWX database without > problem with wee_database > > What I couldn't do: > - Create a new base group (for example group_memory with the new Kb and Gb > units). What file exactly should be modified or created and where is it > located? > > Compared to the documentation, I would tend to make a file > "/usr/share/weewx/user/memory.py" with in it: > > > > > > > > > > *import weewx.unitsweewx.units.obs_group_dict['rocketForce'] = > 'group_memory'weewx.units.USUnits['group_memory'] = > 'byte'weewx.units.MetricUnits['group_memory'] = > 'byte'weewx.units.MetricWXUnits['group_memory'] = > 'byte'weewx.units.default_unit_format_dict['byte'] = > '%.1f'weewx.units.default_unit_label_dict['byte'] = ' byte'* > > Is my approach correct? How to create the units kB and gB? > > > Not quite. First up, no need for memory.py, just use > /usr/share/weewx/user/extensions.py, that is what is is meant for. Next, > WeeWX already has a unit named byte which is used with unit group > group_data. You can certainly define your own unit group group_memory but > why, it just adds the possibility for confusion. The one thing WeeWX does > not have is unit names representing kilobyte and gigabyte (and megabyte), > these you will need to define or otherwise handle yourself. To add units > kilobyte, megabyte and gigabyte you need to define the unit conversion > functions for each unit as well as specifying a number format and unit > label for each unit. We generally specify unit conversion functions using > lambda functions, in the case unit kilobyte we need to specify how to > convert from kilobyte to each of the other units that may be used within > unit group group_data; ie kilobyte to bit, kilobyte to byte, kilobyte to > megabyte and kilobyte to gigabyte. We might do this as follows: > > weewx.units.conversionDict['kilobyte'] = {'bit': lambda x: x * 8192.0, > 'byte': lambda x: x * 1024.0, > 'megabyte': lambda x: x / 1024.0, > 'gigabyte': lambda x: x / > 1048576.0} > > Likewise for each of the other group_data units. To define a unit label > and number format for the kilobyte unit you would use something like: > > weewx.units.default_unit_label_dict['kilobyte'] = ' kB' > weewx.units.default_unit_format_dict['kilobyte'] = '%.1f' > > Again, likewise for the other units. > > Overall you would end up with something like: > > weewx.units.conversionDict['bit'] = {'byte': lambda x: x / 8.0, > 'kilobyte': lambda x: x / 8192.0, > 'megabyte': lambda x: x / 8388608.0, > 'gigabyte': lambda x: x / 8589934592 > <(858)%20993-4592>.0} > weewx.units.conversionDict['byte'] = {'bit': lambda x: x * 8.0, > 'kilobyte': lambda x: x / 1024.0, > 'megabyte': lambda x: x / 1048576.0, > 'gigabyte': lambda x: x / > 1073741824.0} > weewx.units.conversionDict['kilobyte'] = {'bit': lambda x: x * 8192.0, > 'byte': lambda x: x * 1024.0, > 'megabyte': lambda x: x / 1024.0, > 'gigabyte': lambda x: x / > 1048576.0} > weewx.units.conversionDict['megabyte'] = {'bit': lambda x: x * 8388608.0, > 'byte': lambda x: x * 1048576.0, > 'kilobyte': lambda x: x * 1024.0, > 'gigabyte': lambda x: x / 1024.0} > weewx.units.conversionDict['gigabyte'] = {'bit': lambda x: x * 8589934592 > <(858)%20993-4592>.0, > 'byte': lambda x: x > * 1073741824.0, > 'kilobyte': lambda x: x > * 1048576.0, > 'megabyte': lambda x: x * 1024.0} > weewx.units.default_unit_label_dict['kilobyte'] = ' kB' > weewx.units.default_unit_format_dict['kilobyte'] = '%.1f' > weewx.units.default_unit_label_dict['megabyte'] = ' MB' > weewx.units.default_unit_format_dict['megabyte'] = '%.1f' > weewx.units.default_unit_label_dict['gigabyte'] = ' GB' > weewx.units.default_unit_format_dict['gigabyte'] = '%.1f' > > Note the above uses the binary interpretation of a kilobyte; ie 1kB = 1024 > bytes, 1MB = 1024kB and 1GB = 1024MB. If you wish to use the Metric > interpretation of a kilobyte; ie 1kB = 1000 bytes, 1MB = 1000kB and 1GB = > 1000MB some of the above conversion factors will need to be changed > accordingly. > > - For data that is unitless such as charge1, charge5 and charge15 > (assuming that the field names of the weewx.sdb database are > charge1,charge5,charge15 and that the names of the header fields of the CSV > file to import are charge1, charge5 and charge15), will the import be done > by putting in the CSV import configuration file for wee_import.py: > source = CSV > > [CSV] > .... > [[FieldMap]] > dateTime = dateTime, unix_epoch > .... > charge1 = charge1 > charge5 = charge5 > charge15 = charge15 > > > WeeWX has unit group group_count and unit count to handle unitless > fields. All you need to do is assign your fields to group_count in the > same way you assigned your wet bulb field to group_temperature. > > > -- 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/f381a0d3-bbd1-4bbe-a38c-26fab78e56d6n%40googlegroups.com.