import config import devdi.devices import function import json import logging import mqtt import os import report import subprocess import time logger = logging.getLogger(config.APP_NAME) VERS_MAJOR = 1 VERS_MINOR = 3 VERS_PATCH = 0 INFO_TOPIC = "__info__" INFO_DATA = { "app_name": os.path.splitext(os.path.basename(__file__))[0], "version": { "readable": "%d.%d.%d" % (VERS_MAJOR, VERS_MINOR, VERS_PATCH), "major": VERS_MAJOR, "minor": VERS_MINOR, "patch": VERS_PATCH }, "git": { "url": subprocess.check_output(["git", "config", "--get", "remote.origin.url"])[:-1].decode("utf-8"), "ref": subprocess.check_output(["git", "log", "-1", '--format="%H"'])[1:-2].decode("utf-8") } } def __info_publisher__(client, userdata, message): data = json.loads(message.payload) if data != INFO_DATA: client.publish(INFO_TOPIC, json.dumps(INFO_DATA)) if __name__ == "__main__": # # Logging # if config.DEBUG: report.appLoggingConfigure(None, 'stdout', ((config.APP_NAME, logging.DEBUG), ), target_level=logging.WARNING, fmt=report.SHORT_FMT, host='localhost', port=19996) else: report.stdoutLoggingConfigure(((config.APP_NAME, config.LOGLEVEL), ), report.SHORT_FMT) # # MQTT Client # mc = mqtt.mqtt_client(host=config.MQTT_SERVER, port=config.MQTT_PORT, username=config.MQTT_USER, password=config.MQTT_PASSWORD, name=config.APP_NAME) mc.add_callback(INFO_TOPIC, __info_publisher__) # # Smarthome physical Devices # pd = devdi.devices.physical_devices(mc) # # Smarthome physical Devices # vd = devdi.devices.videv_devices(mc) # # Smart Home Functionality # func = function.all_functions(mc, pd, vd) while (True): time.sleep(1)