From cd6644ea4ddc78597934ab0ef5ba50e3c3daa927 Mon Sep 17 00:00:00 2001 From: Mitja Felicijan Date: Sat, 8 Jul 2023 23:25:41 +0200 Subject: Moved to a simpler SSG --- ...k-with-eiink-display-and-raspberry-pi-zero.html | 71 ++++++++++++++++++++++ 1 file changed, 71 insertions(+) create mode 100755 public/simple-world-clock-with-eiink-display-and-raspberry-pi-zero.html (limited to 'public/simple-world-clock-with-eiink-display-and-raspberry-pi-zero.html') diff --git a/public/simple-world-clock-with-eiink-display-and-raspberry-pi-zero.html b/public/simple-world-clock-with-eiink-display-and-raspberry-pi-zero.html new file mode 100755 index 0000000..472b67e --- /dev/null +++ b/public/simple-world-clock-with-eiink-display-and-raspberry-pi-zero.html @@ -0,0 +1,71 @@ +Simple world clock with eInk display and Raspberry Pi Zero

Simple world clock with eInk display and Raspberry Pi Zero

Jun 26, 2021

Our team is spread across the world, from the USA all the way to Australia, so +having some sort of world clock makes sense.

Currently, I am using an extension for Gnome called Timezone +extension, +and it serves the purpose quite well.

But I also have a bunch of electronics that I bought through the time, and I am +not using any of them, and it's time to stop hording this stuff and use it in a +project.

A while ago I bought a small eInk display Inky +pHAT and I +have a bunch of Raspberry Pi's +Zero lying around that +I really need to use.

Inky pHAT, Raspberry Pi Zero

Since the Inky Inky +pHAT is +essentially a HAT, it can easily be added on top of the Raspberry Pi +Zero.

First, I installed the necessary software on Raspberry Pi with pip3 install inky.

And then I created a file clock.py in home directory /home/pi.

#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+
+import sys
+import os
+from inky.auto import auto
+from PIL import Image, ImageFont, ImageDraw
+from font_fredoka_one import FredokaOne
+
+clocks = [
+  'America/New_York',
+  'Europe/Ljubljana',
+  'Australia/Brisbane',
+]
+
+board = auto()
+board.set_border(board.WHITE)
+board.rotation = 90
+
+img = Image.new('P', (board.WIDTH, board.HEIGHT))
+draw = ImageDraw.Draw(img)
+
+big_font = ImageFont.truetype(FredokaOne, 18)
+small_font = ImageFont.truetype(FredokaOne, 13)
+
+x = board.WIDTH / 3
+y = board.HEIGHT / 3
+
+idx = 1
+for clock in clocks:
+  ctime = os.popen('TZ="{}" date +"%a,%H:%M"'.format(clock))
+  ctime = ctime.read().strip().split(',')
+  city = clock.split('/')[1].replace('_', ' ')
+
+  draw.text((15, (idx*y)-y+10), city, fill=board.BLACK, font=small_font)
+  draw.text((110, (idx*y)-y+7), str(ctime[0]), fill=board.BLACK, font=big_font)
+  draw.text((155, (idx*y)-y+7), str(ctime[1]), fill=board.BLACK, font=big_font)
+
+  idx += 1
+
+board.set_image(img)
+board.show()
+

And because eInk displays are rather slow to refresh and the clock requires +refreshing only once a minute, this can be done through cronjob.

Before we add this job to cron we need to make clock.py executable with chmod +x clock.py.

Then we add a cronjob with crontab -e.

* * * * * /home/pi/clock.py
+

So, we end up with a result like this.

World Clock

And for the enclosure that can be 3D printed, but I haven't yet something like +this can be used.

You can download my STL file for the enclosure +here, but make sure that dimensions make +sense and also opening for USB port should be added or just use a drill and some +hot glue to make it stick in the enclosure.

\ No newline at end of file -- cgit v1.2.3