Files
weewx/bin/wee_device

79 lines
2.1 KiB
Python
Executable File

#!/usr/bin/env python
#
# Copyright (c) 2013-2019 Matthew Wall and Tom Keffer <tkeffer@gmail.com>
#
# 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()