#!/usr/bin/env python # # Copyright (c) 2013-2019 Matthew Wall and Tom Keffer # # See the file LICENSE.txt for your full rights. # """Command line utility for configuring devices.""" from __future__ import absolute_import from __future__ import print_function import logging import sys import weecfg import weeutil.logger import weewx from weeutil.weeutil import to_int log = logging.getLogger(__name__) def main(): # Set defaults for logging: weeutil.logger.setup('wee_device', {}) # Load the configuration file config_fn, config_dict = weecfg.read_config(None, sys.argv[1:]) print('Using configuration file %s' % config_fn) weewx.debug = to_int(config_dict.get('debug', 0)) # Do it again, this time reflecting the debug setting weeutil.logger.setup('wee_device', {}) try: # Find the device type device_type = config_dict['Station']['station_type'] driver = config_dict[device_type]['driver'] except KeyError as e: sys.exit("Unable to determine driver: %s" % e) # Try to load the driver device = None try: __import__(driver) driver_module = sys.modules[driver] loader_function = getattr(driver_module, 'configurator_loader') except ImportError as e: msg = "Unable to import driver %s: %s" % (driver, e) log.error(msg) sys.exit(msg) except AttributeError as e: msg = "The driver %s does not include a configuration tool" % driver log.info("%s: %s" % (msg, e)) sys.exit(0) except Exception as e: msg = "Cannot load configurator for %s" % device_type log.error("%s: %s" % (msg, e)) sys.exit(msg) device = loader_function(config_dict) # Try to determine driver name and version. try: driver_name = driver_module.DRIVER_NAME except AttributeError: driver_name = '?' try: driver_vers = driver_module.DRIVER_VERSION except AttributeError: driver_vers = '?' print('Using %s driver version %s (%s)' % (driver_name, driver_vers, driver)) device.configure(config_dict) if __name__ == "__main__": main()