import config
import devdi
import devdi.props as props
#import function
#import json
import logging
import mqtt
import os
import report
#import subprocess
import time

logger = logging.getLogger(config.APP_NAME)


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, logging.WARNING), ), 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)

    #
    # Smarthome Devices
    #
    ddi = devdi.devices(mc)

    #
    # Smart Home Functionality
    #
    #######
    # GFW #
    #######
    loc = props.LOC_GFW
    # DIRK
    roo = props.ROO_DIR
    sml = ddi.get(props.STG_SHE, loc, roo, props.FUN_MAL)
    tml = ddi.get(props.STG_ZGW, loc, roo, props.FUN_MAL)
    sml.register_power_on_instance(tml)
    # FLOOR
    roo = props.ROO_FLO
    sml = ddi.get(props.STG_SHE, loc, roo, props.FUN_MAL)
    tml = ddi.get(props.STG_ZGW, loc, roo, props.FUN_MAL, 1)
    sml.register_power_on_instance(tml)
    tml = ddi.get(props.STG_ZGW, loc, roo, props.FUN_MAL, 2)
    sml.register_power_on_instance(tml)
    
    #######
    # FFW #
    #######
    loc = props.LOC_FFW
    # JULIAN
    roo = props.ROO_JUL
    sml = ddi.get(props.STG_SHE, loc, roo, props.FUN_MAL)
    tml = ddi.get(props.STG_ZFW, loc, roo, props.FUN_MAL)
    sml.register_power_on_instance(tml)
    # LIVINGROOM
    roo = props.ROO_LIV
    sml = ddi.get(props.STG_SHE, loc, roo, props.FUN_MAL)
    tml = ddi.get(props.STG_ZFW, loc, roo, props.FUN_MAL)
    sml.register_power_on_instance(tml)
    # SLEEP
    roo = props.ROO_SLP
    sml = ddi.get(props.STG_SHE, loc, roo, props.FUN_MAL)
    tml = ddi.get(props.STG_ZFW, loc, roo, props.FUN_MAL)
    sml.register_power_on_instance(tml)
    
    #######
    # FFE #
    #######
    loc = props.LOC_FFE
    # KITCHEN
    roo = props.ROO_KIT
    sml = ddi.get(props.STG_SHE, loc, roo, props.FUN_CIR)
    sml.auto_off(600)
    # LIVINGROOM
    roo = props.ROO_LIV
    sml = ddi.get(props.STG_SHE, loc, roo, props.FUN_MAL)
    tml = ddi.get(props.STG_ZFE, loc, roo, props.FUN_MAL)
    sml.register_power_on_instance(tml)
    # SLEEP
    roo = props.ROO_SLP
    sml = ddi.get(props.STG_SHE, loc, roo, props.FUN_MAL)
    tml = ddi.get(props.STG_ZFE, loc, roo, props.FUN_MAL)
    sml.register_power_on_instance(tml)

    while (True):
        time.sleep(1)
