I have that line in my custom service for pulling the data from an API. 
Should I also put it in the extension.py?

On Tuesday, July 23, 2024 at 4:17:36 PM UTC-5 gjr80 wrote:

> OK, I suspect the problem is when you added field lakeSurfaceLevel to 
> WeeWX you didn't tell WeeWX what unit group the field belongs to. 
> Consequently, when you attempt to import data into lakeSurfaceLevel weectl 
> import conducts some checks to see if any source field unit conversion is 
> required. That is what is causing the KeyError error.
>
> The simple fix is to tell WeeWX what unit group is used by the WeeWX field 
> lakeSurfaceLevel. There are a number of ways to do this, the most common 
> is to add a few lines to ~/weewx-data/bin/user/extensions.py. You could 
> try adding the following to ~/weewx-data/bin/user/extensions.py:
>
> import weewx.units
> weewx.units.obs_group_dict['lakeSurfacelevel'] = 'group_altitude'
>
> save extensions.py and try the import agin.
>
> Gary
>
> On Wednesday 24 July 2024 at 06:50:28 UTC+10 Zach wrote:
>
>> Sorry, I should have clicked reply all. ;)
>>
>> Here is the output
>>
>> Using configuration file */Users/zach/weewx-data/weewx.conf*
>>
>> This is a dry run. Nothing will actually be done.
>>
>> Starting weectl import...
>>
>> A CSV import from source file '/Users/zach/Downloads/Untitled.csv' has 
>> been requested.
>>
>> The following options will be used:
>>
>>      config=/Users/zach/weewx-data/weewx.conf, 
>> import-config=/Users/zach/weewx-data/csv.conf
>>
>>      source=/Users/zach/Downloads/Untitled.csv, from=None, to=None
>>
>>      dry-run=True, calc_missing=False, ignore_invalid_data=True
>>
>>      tranche=250, interval=derive, date/time_string_format=%Y-%m-%d 
>> %H:%M:%S
>>
>>      delimiter=',', wind_direction=[-360.0, 360.0]
>>
>>      UV=False, radiation=False
>>
>> Using database binding 'wx_binding', which is bound to database 
>> 'weewx.sdb'
>>
>> Destination table 'archive' unit system is '0x01' (US).
>>
>> The following imported field-to-WeeWX field map will be used:
>>
>>      source field 'datetime' in units 'unix_epoch' --> WeeWX field 
>> 'dateTime'
>>
>>      source field 'lakeSurfaceLevel' in units 'foot' --> WeeWX field 
>> 'lakeSurfaceLevel'
>>
>> Imported records will not overwrite existing database records.
>>
>> All WeeWX UV fields will be set to None.
>>
>> All WeeWX radiation fields will be set to None.
>>
>> This is a dry run, imported data will not be saved to archive.
>>
>> Starting dry run import ...
>>
>> Obtaining raw import data for period 1 ...
>>
>> Raw import data read successfully for period 1.
>>
>> Mapping raw import data for period 1 ...
>>
>> Traceback (most recent call last):
>>
>>   File "/Users/zach/weewx-venv/bin/weectl", line 8, in <module>
>>
>>     sys.exit(main())
>>
>>   File "/Users/zach/weewx-venv/lib/python3.9/site-packages/weectl.py", 
>> line 67, in main
>>
>>     namespace.func(namespace)
>>
>>   File 
>> "/Users/zach/weewx-venv/lib/python3.9/site-packages/weectllib/__init__.py", 
>> line 90, in dispatch
>>
>>     namespace.action_func(config_dict, namespace)
>>
>>   File 
>> "/Users/zach/weewx-venv/lib/python3.9/site-packages/weectllib/import_cmd.py",
>>  
>> line 85, in import_func
>>
>>     weectllib.import_actions.obs_import(config_dict,
>>
>>   File 
>> "/Users/zach/weewx-venv/lib/python3.9/site-packages/weectllib/import_actions.py",
>>  
>> line 58, in obs_import
>>
>>     source_obj.run()
>>
>>   File 
>> "/Users/zach/weewx-venv/lib/python3.9/site-packages/weeimport/weeimport.py", 
>> line 406, in run
>>
>>     _mapped_data = self.map_raw_data(_raw_data, self.archive_unit_sys)
>>
>>   File 
>> "/Users/zach/weewx-venv/lib/python3.9/site-packages/weeimport/weeimport.py", 
>> line 976, in map_raw_data
>>
>>     weewx.units.obs_group_dict[_field])
>>
>>   File 
>> "/Applications/Xcode.app/Contents/Developer/Library/Frameworks/Python3.framework/Versions/3.9/lib/python3.9/collections/__init__.py",
>>  
>> line 941, in __getitem__
>>
>>     return self.__missing__(key)            # support subclasses that 
>> define __missing__
>>
>>   File 
>> "/Applications/Xcode.app/Contents/Developer/Library/Frameworks/Python3.framework/Versions/3.9/lib/python3.9/collections/__init__.py",
>>  
>> line 933, in __missing__
>>
>>     raise KeyError(key)
>>
>> KeyError: 'lakeSurfaceLevel'
>>
>>
>> On Tuesday, July 23, 2024 at 3:45:46 PM UTC-5 gjr80 wrote:
>>
>>> Thanks, can you post the complete and exact output to the console when 
>>> weectl 
>>> import is run. Also, what does the weectl log show?
>>>
>>> Gary
>>> On Wednesday 24 July 2024 at 06:40:53 UTC+10 Zach wrote:
>>>
>>>> I'm trying to track the water level of a lake so I added a new column 
>>>> to the database (lakeSurfaceLevel), created a service to populate the 
>>>> data, 
>>>> and modified my skin to display it. All of that works great, however when 
>>>> I 
>>>> try to import data for that new observation using weectl, I get a error 
>>>> "KeyError: 'lakeSurfaceLevel'
>>>>
>>>> Any help would be greatly appreciated!
>>>>
>>>> Attached are the csv.conf and a data file
>>>>
>>>

-- 
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/ffac1a39-f862-421f-964c-fd998cc945e1n%40googlegroups.com.

Reply via email to