#!/usr/bin/env python3

# Program to control synthesizers power state.

import argparse
import configparser
import os,sys,inspect
currentDir = os.path.dirname(os.path.abspath(
    inspect.getfile(inspect.currentframe())))
parentDir = os.path.dirname(currentDir)
sys.path.insert(0, parentDir) 
from homeassistant import HomeAssistant

# Parse settings config
SCRIPT_DIR = os.path.abspath(os.path.dirname(sys.argv[0]))
configString = '[Settings]\n' + open(SCRIPT_DIR + '/../../settings.conf').read()
configParser = configparser.RawConfigParser()
configParser.read_string(configString)

# Load needed credentials
HA_IP = configParser.get('Settings', 'HA_IP')
HA_TOKEN = configParser.get('Settings', 'HA_TOKEN')

# Set power state of the Eurorack.
def setEurorackPower(state):
    ha.setOnOff('switch.eurorack_lower', state)
    ha.setOnOff('switch.eurorack_top', state)

# Set power state of the Behringer DeepMind 12.
def setDeepMind12Power(state):
    ha.setOnOff('switch.deepmind_12', state)

# Set power state of the ASM Hydrasynth.
def setHydrasynthPower(state):
    ha.setOnOff('switch.hydrasynth', state)

# Set power state of the Arturia MatrixBrute.
def setMatrixBrutePower(state):
    ha.setOnOff('switch.matrixbrute', state)

# Set power state of all synthesizers.
def setSynthsPower(state):
    setEurorackPower(state)
    setDeepMind12Power(state)
    setHydrasynthPower(state)
    setMatrixBrutePower(state)

parser = argparse.ArgumentParser(
    description='Control power state of synthesizers.')
parser.add_argument('-d', '--daw', action='store_true',
                    help='enable DAW mode',
                    dest='daw', default=False, required=False)
parser.add_argument('-o', '--off', action='store_true',
                    help='turn all synths off',
                    dest='off', default=False, required=False)
args = parser.parse_args()

ha = HomeAssistant(HA_IP, HA_TOKEN)

if args.daw:
    setSynthsPower(True)
elif args.off:
    setSynthsPower(False)