mirror of
https://github.com/weewx/weewx.git
synced 2026-04-18 00:26:57 -04:00
79 lines
2.1 KiB
Python
Executable File
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()
|