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.