py-yamaha2mqtt/__main__.py

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)