84 lines
2.3 KiB
Python
Executable File
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()
|