chutney/chutney.py

65 lines
1.5 KiB
Python

import sys
from character_display import CharacterDisplay
from multiprocessing import Event
from multiprocessing import Process
from signal import signal
from signal import SIGTERM
from time import sleep
from time_display import TimeDisplay
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)
WEATHER_UPDATE_INTERVAL_IN_SECONDS = 60
DISPLAY_UPDATE_INTERVAL_IN_SECONDS = 0.5
CONFIG_FILE = 'chutney.cfg'
def main():
haltEvent = Event()
signal(SIGTERM, cleanExit(unicorn, haltEvent))
unicorn.brightness(0.3)
weatherThread = Process(target=weatherLoop, args=[haltEvent])
weatherThread.start()
characterDisplay = CharacterDisplay(unicorn)
timeDisplay = TimeDisplay(characterDisplay, topRow=15)
weatherDisplay = WeatherDisplay(characterDisplay, topRow=9)
while True:
timeDisplay.showTime()
weatherDisplay.showWeather()
sleep(DISPLAY_UPDATE_INTERVAL_IN_SECONDS)
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()
def cleanExit(unicorn, haltEvent):
def _exit_(signum, frame):
unicorn.off()
haltEvent.set()
sys.exit(0)
return _exit_
if __name__ == '__main__':
main()