chutney/chutney.py

65 lines
1.5 KiB
Python
Raw Normal View History

import sys
from character_display import CharacterDisplay
2022-12-25 12:33:06 -05:00
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
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-25 12:33:06 -05:00
WEATHER_UPDATE_INTERVAL_IN_SECONDS = 60
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 12:33:06 -05:00
weatherThread = Process(target=weatherLoop, args=[haltEvent])
weatherThread.start()
2022-12-23 14:57:33 -05:00
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)
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()
def cleanExit(unicorn, haltEvent):
def _exit_(signum, frame):
unicorn.off()
haltEvent.set()
sys.exit(0)
return _exit_
if __name__ == '__main__':
main()