Modularize bridge and improve control GUI
This commit is contained in:
@@ -0,0 +1,50 @@
|
||||
import argparse
|
||||
import json
|
||||
import logging
|
||||
import sys
|
||||
|
||||
from .app import DEFAULT_CONFIG, LOG, CameraControlBridge, load_config_or_env
|
||||
|
||||
|
||||
def main(argv=None):
|
||||
parser = argparse.ArgumentParser()
|
||||
parser.add_argument("--config", default=DEFAULT_CONFIG)
|
||||
parser.add_argument("--serve", action="store_true")
|
||||
parser.add_argument("--list", action="store_true")
|
||||
parser.add_argument("--check", action="store_true")
|
||||
parser.add_argument("--publish-discovery", action="store_true")
|
||||
parser.add_argument("--action", metavar="ID")
|
||||
parser.add_argument("command", nargs="?")
|
||||
parser.add_argument("--all-off", action="store_true")
|
||||
args = parser.parse_args(argv)
|
||||
|
||||
logging.basicConfig(level=logging.INFO, format="%(asctime)s %(levelname)s %(message)s")
|
||||
bridge = CameraControlBridge(load_config_or_env(args.config))
|
||||
|
||||
if args.list:
|
||||
bridge.list_actions()
|
||||
return 0
|
||||
if args.check:
|
||||
return bridge.check()
|
||||
if args.all_off:
|
||||
print(json.dumps(bridge.all_off(), indent=2))
|
||||
return 0
|
||||
if args.action:
|
||||
if not args.command:
|
||||
print("missing command", file=sys.stderr)
|
||||
return 2
|
||||
print(json.dumps(bridge.execute_action(args.action, args.command, publish=False), indent=2))
|
||||
return 0
|
||||
if args.publish_discovery:
|
||||
for credential in bridge.credentials:
|
||||
try:
|
||||
bridge.mqtt.connect(credential.get("username"), credential.get("password"))
|
||||
bridge.publish_discovery()
|
||||
bridge.mqtt.disconnect_cleanly()
|
||||
return 0
|
||||
except Exception as exc:
|
||||
LOG.warning("publish discovery failed using %s: %s", credential["source"], exc)
|
||||
return 1
|
||||
|
||||
bridge.serve()
|
||||
return 0
|
||||
Reference in New Issue
Block a user