1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 |
- 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)
|