pumpkin/__main__.py

84 lines
2.3 KiB
Python
Executable File

#!/usr/bin/env python3
from pumpkin import Pumpkin
from config import Config
from time import time
from time import sleep
from os import listdir
from os.path import isfile
from shutil import copy
from sys import argv
import atexit
def cleanup():
pumpkin.cleanup()
CONFIG_PATH = '/etc/pumpkin.conf'
# Make sure that a config file exists
if not isfile(CONFIG_PATH):
parts = argv[0].split('/')
pathDefaultConf = '/'.join(parts[:len(parts) - 1]) + '/pumpkin.conf'
print(pathDefaultConf)
copy(pathDefaultConf, CONFIG_PATH)
config = Config(CONFIG_PATH)
AUDIO_PATH = config.getString('AUDIO_PATH')
COLOR_RED = config.getInt('COLOR_RED')
COLOR_GREEN = config.getInt('COLOR_GREEN')
COLOR_BLUE = config.getInt('COLOR_BLUE')
COLOR_BACKGROUND_RED = config.getInt('COLOR_BACKGROUND_RED')
COLOR_BACKGROUND_GREEN = config.getInt('COLOR_BACKGROUND_GREEN')
COLOR_BACKGROUND_BLUE = config.getInt('COLOR_BACKGROUND_BLUE')
COLOR_FIRE_RED = config.getInt('COLOR_FIRE_RED')
COLOR_FIRE_GREEN = config.getInt('COLOR_FIRE_GREEN')
COLOR_FIRE_BLUE = config.getInt('COLOR_FIRE_BLUE')
GPIOS_RED = config.getIntList('GPIOS_RED')
GPIOS_GREEN = config.getIntList('GPIOS_GREEN')
GPIOS_BLUE = config.getIntList('GPIOS_BLUE')
GPIO_TRIGGER = config.getInt('GPIO_TRIGGER')
GPIO_EVAPORATOR = config.getInt('GPIO_EVAPORATOR')
GPIO_PUMP = config.getInt('GPIO_PUMP')
FOG_RUNTIME_MAX = config.getFloat('FOG_RUNTIME_MAX')
GPIO_POWEROFF = config.getInt('GPIO_POWEROFF')
RETRIGGER_TIMEOUT = config.getFloat('RETRIGGER_TIMEOUT')
PWM_FREQUENCY = config.getInt('PWM_FREQUENCY')
pumpkin = Pumpkin(AUDIO_PATH, GPIOS_RED, GPIOS_GREEN, GPIOS_BLUE, GPIO_TRIGGER, PWM_FREQUENCY)
pumpkin.setAudioColor(COLOR_RED, COLOR_GREEN, COLOR_BLUE)
pumpkin.setBackgroundColor(COLOR_BACKGROUND_RED, COLOR_BACKGROUND_GREEN, COLOR_BACKGROUND_BLUE)
pumpkin.setFireColor(COLOR_FIRE_RED, COLOR_FIRE_GREEN, COLOR_FIRE_BLUE)
pumpkin.enableFog(GPIO_EVAPORATOR, GPIO_PUMP, FOG_RUNTIME_MAX)
pumpkin.enablePowerOff(GPIO_POWEROFF)
atexit.register(cleanup)
retriggerTimeout = RETRIGGER_TIMEOUT
t_after_trigger = time() - retriggerTimeout
while True:
try:
if pumpkin.isTriggered() and time() - t_after_trigger > retriggerTimeout:
pumpkin.speak()
t_after_trigger = time()
else:
pumpkin.lurk()
sleep(0.5)
except Exception as e:
print(e)
exit()