#!/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()