chutney/chutney.py

83 lines
2.1 KiB
Python
Raw Normal View History

import sys
from character_display import CharacterDisplay
2022-12-26 19:37:50 -05:00
from garage_display import GarageDisplay
from garage_updater import GarageUpdater
2022-12-25 13:55:08 -05:00
from multiprocessing import Event
from multiprocessing import Process
2022-12-25 12:33:06 -05:00
from signal import signal
from signal import SIGTERM
from time import sleep
from time_display import TimeDisplay
2022-12-24 10:59:04 -05:00
from weather_display import WeatherDisplay
from weather_updater import WeatherUpdater
try:
import unicornhathd as unicorn
unicorn.rotation(90)
except ImportError:
from unicorn_hat_sim import unicornhathd as unicorn
unicorn.rotation(180)
2022-12-26 19:37:50 -05:00
WEATHER_UPDATE_INTERVAL_IN_SECONDS = 10
GARAGE_UPDATE_INTERVAL_IN_SECONDS = 10
DISPLAY_UPDATE_INTERVAL_IN_SECONDS = 0.5
CONFIG_FILE = 'chutney.cfg'
def main():
2022-12-25 12:33:06 -05:00
haltEvent = Event()
signal(SIGTERM, cleanExit(unicorn, haltEvent))
unicorn.brightness(0.3)
2022-12-25 13:55:08 -05:00
weatherThread = Process(target=weatherLoop, args=[haltEvent])
weatherThread.start()
2022-12-26 19:37:50 -05:00
garageThread = Process(target=garageLoop, args=[haltEvent])
garageThread.start()
2022-12-23 14:57:33 -05:00
characterDisplay = CharacterDisplay(unicorn)
timeDisplay = TimeDisplay(characterDisplay, topRow=15)
weatherDisplay = WeatherDisplay(characterDisplay, topRow=9)
2022-12-26 19:37:50 -05:00
garageDisplay = GarageDisplay(characterDisplay, topRow=3)
while True:
timeDisplay.showTime()
weatherDisplay.showWeather()
2022-12-26 19:37:50 -05:00
garageDisplay.showGarageState()
sleep(DISPLAY_UPDATE_INTERVAL_IN_SECONDS)
2022-12-25 12:33:06 -05:00
def weatherLoop(haltEvent):
weatherUpdater = WeatherUpdater(configFile=CONFIG_FILE)
while not haltEvent.is_set():
weatherUpdater.updateWeather()
haltEvent.wait(timeout=WEATHER_UPDATE_INTERVAL_IN_SECONDS)
weatherUpdater.clearWeather()
2022-12-26 19:37:50 -05:00
def garageLoop(haltEvent):
garageUpdater = GarageUpdater(configFile=CONFIG_FILE)
while not haltEvent.is_set():
garageUpdater.updateGarageState()
haltEvent.wait(timeout=GARAGE_UPDATE_INTERVAL_IN_SECONDS)
garageUpdater.clearGarageState()
2022-12-25 12:33:06 -05:00
def cleanExit(unicorn, haltEvent):
def _exit_(signum, frame):
unicorn.off()
haltEvent.set()
sys.exit(0)
return _exit_
if __name__ == '__main__':
main()