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.

Reply via email to