56 lines
1.5 KiB
Python
56 lines
1.5 KiB
Python
import logging
|
|
import time
|
|
from pathlib import Path
|
|
from typing import Optional
|
|
|
|
import typer
|
|
from citadel.mqtt import Client
|
|
|
|
from .app import Yamaha
|
|
from .senario import load_from_file, SENARIOS
|
|
|
|
def main(\
|
|
mqtt_user: str = typer.Option(... , envvar="YAMAHA_MQTT_USER"),\
|
|
mqtt_pwd: str = typer.Option(... , envvar="YAMAHA_MQTT_PWD"),\
|
|
mqtt_host: str = typer.Option(... , envvar="YAMAHA_MQTT_HOST"),\
|
|
mqtt_port: int = typer.Option(... , envvar="YAMAHA_MQTT_PORT"),\
|
|
yamaha_host: str = typer.Option(... , envvar="YAMAHA_HOST"),\
|
|
senarios_file: Optional[Path] = typer.Option(None, exists=True,
|
|
file_okay=True, dir_okay=False, readable=True, resolve_path=True)\
|
|
):
|
|
|
|
if senarios_file:
|
|
load_from_file(senarios_file)
|
|
|
|
client = Client()
|
|
client.setup(mqtt_host, mqtt_port, mqtt_user, mqtt_pwd)
|
|
yamaha = Yamaha(yamaha_host, client)
|
|
|
|
client.loop_forever()
|
|
|
|
if __name__ == "__main__":
|
|
# create logger
|
|
logger = logging.getLogger('')
|
|
logger.setLevel(logging.DEBUG)
|
|
|
|
# create console handler and set level to debug
|
|
ch = logging.StreamHandler()
|
|
ch.setLevel(logging.DEBUG)
|
|
|
|
# create formatter
|
|
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
|
|
|
|
# add formatter to ch
|
|
ch.setFormatter(formatter)
|
|
|
|
# add ch to logger
|
|
logger.addHandler(ch)
|
|
|
|
#deactive urllib3 logger too verbose
|
|
logger = logging.getLogger('urllib3')
|
|
logger.setLevel(logging.ERROR)
|
|
|
|
typer.run(main)
|
|
|
|
|