diff --git a/assets/cal-icon.aseprite b/assets/cal-icon.aseprite new file mode 100644 index 0000000..d6d5872 Binary files /dev/null and b/assets/cal-icon.aseprite differ diff --git a/assets/cal-icon.bmp b/assets/cal-icon.bmp new file mode 100644 index 0000000..5f182e1 Binary files /dev/null and b/assets/cal-icon.bmp differ diff --git a/assets/output.bmp b/assets/output.bmp new file mode 100644 index 0000000..a59ea67 Binary files /dev/null and b/assets/output.bmp differ diff --git a/assets/test2.bmp b/assets/test2.bmp new file mode 100644 index 0000000..a702753 Binary files /dev/null and b/assets/test2.bmp differ diff --git a/assets/test3.bmp b/assets/test3.bmp new file mode 100644 index 0000000..9c8570e Binary files /dev/null and b/assets/test3.bmp differ diff --git a/assets/test4.bmp b/assets/test4.bmp new file mode 100644 index 0000000..75792e1 Binary files /dev/null and b/assets/test4.bmp differ diff --git a/assets/wavesharefont.ttc b/assets/wavesharefont.ttc new file mode 100644 index 0000000..4cbb7c5 Binary files /dev/null and b/assets/wavesharefont.ttc differ diff --git a/config.json b/config.json index 428b037..145f58b 100644 --- a/config.json +++ b/config.json @@ -1,9 +1,9 @@ { - "displayTZ": "Spain/Madrid", - "isDisplayConected": true, + "isDisplayConected": false, "screenWidth": 250, "screenHeight": 122, "imageWidth": 250, "imageHeight": 122, - "rotateAngle": 180 + "rotateAngle": 180, + "hourFormat": "12h" } diff --git a/raspagenda.py b/raspagenda.py index 57f8501..4018f9d 100644 --- a/raspagenda.py +++ b/raspagenda.py @@ -9,6 +9,7 @@ There will also be work needed to adjust the calendar rendering for different sc CSS stylesheets in the "render" folder. """ import datetime as dt +import os import sys @@ -16,46 +17,71 @@ from display.display import DisplayHelper import json import logging from PIL import Image,ImageDraw,ImageFont -import time def main(): # Basic configuration settings (user replaceable) - configFile = open('config.json') + # config.json is in the root folder + configFile = open(os.path.join(os.path.dirname(os.path.realpath(__file__)), 'config.json')) config = json.load(configFile) - displayTZ = config['displayTZ'] # list of timezones - print(pytz.all_timezones) + isDisplayConected = config['isDisplayConected'] # set to true when debugging rendering without displaying to screen screenWidth = config['screenWidth'] # Width of E-Ink display. Default is landscape. Need to rotate image to fit. screenHeight = config['screenHeight'] # Height of E-Ink display. Default is landscape. Need to rotate image to fit. imageWidth = config['imageWidth'] # Width of image to be generated for display. imageHeight = config['imageHeight'] # Height of image to be generated for display. rotateAngle = config['rotateAngle'] # If image is rendered in portrait orientation, angle to rotate to fit screen + hourFormat = config['hourFormat'] # The format the hour will be displayed. eg. 13:02 or 01:02 PM + + # Set the hour, this is important to see what time the e-Paper has been syncronized + if hourFormat == "12h": + time = dt.datetime.now().strftime("%I:%M %p") + else: + time = dt.datetime.now().strftime("%H:%M") + + + assets = os.path.join(os.path.dirname(os.path.realpath(__file__)), 'assets') + # Drawing on the image + font15 = ImageFont.truetype(os.path.join(assets, 'wavesharefont.ttc'), 15) + font24 = ImageFont.truetype(os.path.join(assets, 'wavesharefont.ttc'), 24) + + #image = Image.open('assets/test4.bmp') + image = Image.new('1', (imageWidth, imageHeight), 255) # 255: clear the frame + draw = ImageDraw.Draw(image) + + draw.text((0, 0), time, font = font15, fill = 0) # draw the current time in the top left corner + + draw.line([(0,20),(250,20)], fill = 0,width = 2) + draw.line([(125,20),(125,122)], fill = 0,width = 2) + + cal_icon = Image.open(os.path.join(assets, "cal-icon.bmp")) + + image.paste(cal_icon, (129,24)) + + draw.text((160, 26), 'Agenda', font = font15, fill = 0) + + # draw.line([(0,50),(50,0)], fill = 0,width = 1) + # draw.chord((10, 60, 50, 100), 0, 360, fill = 0) + # draw.ellipse((55, 60, 95, 100), outline = 0) + # draw.pieslice((55, 60, 95, 100), 90, 180, outline = 0) + # draw.pieslice((55, 60, 95, 100), 270, 360, fill = 0) + # draw.polygon([(110,0),(110,50),(150,25)],outline = 0) + # draw.polygon([(190,0),(190,50),(150,25)],fill = 0) + # draw.rectangle([(0,0),(50,50)],outline = 0) + + image.save(os.path.join(assets, 'output.bmp')) + if isDisplayConected: from display.display import DisplayHelper displayService = DisplayHelper(screenWidth, screenHeight) - - image = Image.open('assets/test.bmp') - draw = ImageDraw.Draw(image) - draw.rectangle([(0,0),(50,50)],outline = 0) - draw.rectangle([(55,0),(100,50)],fill = 0) - draw.line([(0,0),(50,50)], fill = 0,width = 1) - draw.line([(0,50),(50,0)], fill = 0,width = 1) - draw.chord((10, 60, 50, 100), 0, 360, fill = 0) - draw.ellipse((55, 60, 95, 100), outline = 0) - draw.pieslice((55, 60, 95, 100), 90, 180, outline = 0) - draw.pieslice((55, 60, 95, 100), 270, 360, fill = 0) - draw.polygon([(110,0),(110,50),(150,25)],outline = 0) - draw.polygon([(190,0),(190,50),(150,25)],fill = 0) - - - displayService.update(image) # go to sleep + displayService.update(image.rotate(rotateAngle)) # go to sleep displayService.clear() displayService.sleep() # go to sleep if __name__ == "__main__": - main() \ No newline at end of file + main()