With the new folder structure, users can now easily clone the repo with git clone. The need for renaming and shifting folders is now gone.
119 lines
3.5 KiB
Python
119 lines
3.5 KiB
Python
#!/usr/bin/python3
|
|
# -*- coding: utf-8 -*-
|
|
"""
|
|
Main script of Inky-Calendar software.
|
|
Copyright by aceisace
|
|
"""
|
|
from __future__ import print_function
|
|
from configuration import *
|
|
from settings import *
|
|
import arrow
|
|
from time import sleep
|
|
import gc
|
|
import inkycal_drivers as drivers
|
|
|
|
import inkycal_rss as rss
|
|
import inkycal_weather as weather
|
|
import inkycal_calendar as calendar
|
|
import inkycal_agenda as agenda
|
|
|
|
|
|
display = drivers.EPD()
|
|
skip_calibration = False
|
|
|
|
"""Perepare for execution of main programm"""
|
|
calibration_countdown = 'initial'
|
|
image_cleanup()
|
|
|
|
"""Check time and calibrate display if time """
|
|
while True:
|
|
now = arrow.now(tz=get_tz())
|
|
for _ in range(1):
|
|
image = Image.new('RGB', (display_width, display_height), background_colour)
|
|
|
|
"""------------------Add short info------------------"""
|
|
print('Current Date: {0} \nCurrent Time: {1}'.format(now.format(
|
|
'D MMM YYYY'), now.format('HH:mm')))
|
|
print('-----------Main programm started now----------')
|
|
|
|
|
|
|
|
"""------------------Calibration check----------------"""
|
|
if skip_calibration != True:
|
|
print('Calibration..', end = ' ')
|
|
if now.hour in calibration_hours:
|
|
if calibration_countdown == 'initial':
|
|
print('required. Performing calibration now.')
|
|
calibration_countdown = 0
|
|
display.calibrate_display(3)
|
|
else:
|
|
if calibration_countdown % (60 // int(update_interval)) == 0:
|
|
display.calibrate_display(3)
|
|
calibration_countdown = 0
|
|
else:
|
|
print('not required. Continuing...')
|
|
else:
|
|
print('Calibration skipped!. Please note that not calibrating e-paper',
|
|
'displays causes ghosting')
|
|
|
|
"""----------------Generating and assembling images------"""
|
|
if top_section == 'Weather':
|
|
try:
|
|
weather.main()
|
|
weather_image = Image.open(image_path + 'weather.png')
|
|
image.paste(weather_image, (0, 0))
|
|
except:
|
|
pass
|
|
|
|
if middle_section == 'Calendar':
|
|
try:
|
|
calendar.main()
|
|
calendar_image = Image.open(image_path + 'calendar.png')
|
|
image.paste(calendar_image, (0, middle_section_offset))
|
|
except:
|
|
pass
|
|
|
|
if middle_section == 'Agenda':
|
|
try:
|
|
agenda.main()
|
|
agenda_image = Image.open(image_path + 'agenda.png')
|
|
image.paste(agenda_image, (0, middle_section_offset))
|
|
except:
|
|
pass
|
|
|
|
if bottom_section == 'RSS':
|
|
try:
|
|
rss.main()
|
|
rss_image = Image.open(image_path + 'rss.png')
|
|
image.paste(rss_image, (0, bottom_section_offset))
|
|
except:
|
|
pass
|
|
|
|
image.save(image_path + 'canvas.png')
|
|
display.reduce_colours(image)
|
|
|
|
"""---------Refreshing E-Paper with newly created image-----------"""
|
|
display.show_image(image)
|
|
|
|
"""--------------Post processing after main loop-----------------"""
|
|
"""Collect some garbage to free up some resources"""
|
|
gc.collect()
|
|
|
|
"""Adjust calibration countdowns"""
|
|
if calibration_countdown == 'initial':
|
|
calibration_countdown = 0
|
|
calibration_countdown += 1
|
|
|
|
"""Calculate duration until next display refresh"""
|
|
for _ in range(1):
|
|
update_timings = [(60 - int(update_interval)*updates) for updates in
|
|
range(60//int(update_interval))]
|
|
|
|
minutes = [i - now.minute for i in update_timings if i >= now.minute]
|
|
refresh_countdown = minutes[0]*60 + (60 - now.second)
|
|
|
|
print('{0} Minutes left until next refresh'.format(minutes[0]))
|
|
|
|
del update_timings, minutes, image
|
|
sleep(refresh_countdown)
|