Unfortunately, adding it to extensions.py did not work. I'll sit tight 
until a fix is completed. But no hurry!

Thanks Gary!

On Tuesday, July 23, 2024 at 5:48:01 PM UTC-5 gjr80 wrote:

> The problem is weectl import is a standalone utility run independent of 
> WeeWX and as such does not load the WeeWX services specified in the WeeWX 
> config file (well it actually does cause some of the services to be loaded, 
> but later on after the import has occurred when missing obs are/may be 
> calculated). I've had some second thoughts since my previous post and I am 
> not even sure that adding those lines to extensions.py will work. If it 
> is easy enough to try please try it, it will either work or not, nothing 
> will be broken/corrupted.
>
> Failing that there will be a small change required to weectl import that 
> I should be able to implement later today.
>
> Let me know how you get on.
>
> Gary
> On Wednesday 24 July 2024 at 07:33:27 UTC+10 Zach wrote:
>
>> 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/c86be2cc-79d7-40cf-be0d-de623c7ee54en%40googlegroups.com.

Reply via email to