world_clock2.py uploaded for screensaver
This commit is contained in:
parent
0019dee681
commit
a721ef66dc
198
world_clock2.py
Normal file
198
world_clock2.py
Normal file
@ -0,0 +1,198 @@
|
|||||||
|
import time
|
||||||
|
from datetime import datetime
|
||||||
|
from rgbmatrix import RGBMatrix, RGBMatrixOptions, graphics
|
||||||
|
import pytz
|
||||||
|
import json
|
||||||
|
|
||||||
|
try:
|
||||||
|
with open('clock_screensaver.json', 'r') as f:
|
||||||
|
settings = json.load(f)['world_clock']
|
||||||
|
except:
|
||||||
|
settings1 = {"clock1": {"time_color": "White", "weekday_color": "Cyan", "date_color": "Blue", "timezone": "Asia/Tokyo", "display_seconds": True, "display_pm": True, "12hour": True}, "clock2": {"time_color": "Orange", "date_color": "White", "timezone": "Asia/Tokyo", "display_seconds": True, "display_pm": True, "12hour": True}, "world_clock": {"city_color": "White", "display_seconds": True, "display_pm": True, "12hour": True}}
|
||||||
|
with open('clock_screensaver.json', 'w') as f:
|
||||||
|
json.dump(settings1, f)
|
||||||
|
settings = settings1['world_clock']
|
||||||
|
|
||||||
|
options = RGBMatrixOptions()
|
||||||
|
options.rows = 32
|
||||||
|
options.cols = 128
|
||||||
|
options.chain_length = 1
|
||||||
|
options.parallel = 1
|
||||||
|
options.hardware_mapping = 'adafruit-hat' # Change this if you have a different GPIO mapping
|
||||||
|
options.gpio_slowdown = 2
|
||||||
|
matrix = RGBMatrix(options=options)
|
||||||
|
canvas = matrix.CreateFrameCanvas()
|
||||||
|
|
||||||
|
font = graphics.Font()
|
||||||
|
#font.LoadFont("fonts/clR6x12.bdf")
|
||||||
|
#font.LoadFont("fonts/6x12.bdf") # Change this to the path of your desired font file
|
||||||
|
color = graphics.Color(255, 255, 255) # White color
|
||||||
|
line_c = graphics.Color(50,50,50)
|
||||||
|
font.LoadFont("fonts/5x7.bdf")
|
||||||
|
|
||||||
|
time_colors = {
|
||||||
|
"day": graphics.Color(255, 191, 0), # Orange color
|
||||||
|
"night": graphics.Color(0, 71,171), # Dark blue / purple color
|
||||||
|
}
|
||||||
|
|
||||||
|
# settings = {'display_seconds': True, 'display_pm': True, '12hour': False}
|
||||||
|
|
||||||
|
def getTimes(timezone):
|
||||||
|
|
||||||
|
if settings['12hour']:
|
||||||
|
if settings['display_pm'] and settings['display_seconds']:
|
||||||
|
time = datetime.now(timezone).strftime("%I:%M:%S %p")
|
||||||
|
elif settings['display_pm'] and not settings['display_seconds']:
|
||||||
|
time = datetime.now(timezone).strftime("%I:%M %p")
|
||||||
|
elif not settings['display_pm'] and settings['display_seconds']:
|
||||||
|
time = datetime.now(timezone).strftime("%I:%M:%S")
|
||||||
|
else:
|
||||||
|
time = datetime.now(timezone).strftime("%I:%M")
|
||||||
|
else:
|
||||||
|
if settings['display_pm'] and settings['display_seconds']:
|
||||||
|
time = datetime.now(timezone).strftime("%H:%M:%S %p")
|
||||||
|
elif settings['display_pm'] and not settings['display_seconds']:
|
||||||
|
time = datetime.now(timezone).strftime("%H:%M %p")
|
||||||
|
elif not settings['display_pm'] and settings['display_seconds']:
|
||||||
|
time = datetime.now(timezone).strftime("%H:%M:%S")
|
||||||
|
else:
|
||||||
|
time = datetime.now(timezone).strftime("%H:%M")
|
||||||
|
|
||||||
|
return time
|
||||||
|
|
||||||
|
def isDaytime(time):
|
||||||
|
if settings['12hour']:
|
||||||
|
hour = int(time.split(':')[0])
|
||||||
|
daytime_start_hour = 6
|
||||||
|
daytime_end_hour = 6
|
||||||
|
am_pm = time[-2:]
|
||||||
|
if (6 <= hour <= 11 and am_pm == 'AM') or (1 <= hour <= 6 and am_pm == 'PM') or (hour == 12 and am_pm == 'PM'):
|
||||||
|
return True
|
||||||
|
else:
|
||||||
|
return False
|
||||||
|
|
||||||
|
# if settings['12hour']:
|
||||||
|
# hour = time.split(':')[0]
|
||||||
|
# daytime_start_hour = 6
|
||||||
|
# daytime_end_hour = 6
|
||||||
|
# print(time)
|
||||||
|
# if ((6 <= int(hour) <= 11) and time[-2:] == 'AM') or ((12 <= int(hour) <= 6) and time[-2:] == 'PM'):
|
||||||
|
# return True
|
||||||
|
# else:
|
||||||
|
# return False
|
||||||
|
else:
|
||||||
|
hour = time.split(':')[0]
|
||||||
|
daytime_start_hour = 6
|
||||||
|
daytime_end_hour = 18
|
||||||
|
|
||||||
|
if daytime_start_hour <= int(hour) <= daytime_end_hour:
|
||||||
|
return True
|
||||||
|
else:
|
||||||
|
return False
|
||||||
|
|
||||||
|
ny_timezone = pytz.timezone('America/New_York')
|
||||||
|
london_timezone = pytz.timezone('Europe/London')
|
||||||
|
tokyo_timezone = pytz.timezone('Asia/Tokyo')
|
||||||
|
au_timezone = pytz.timezone('Australia/Sydney')
|
||||||
|
dubai_timezone = pytz.timezone('Asia/Dubai')
|
||||||
|
la_timezone = pytz.timezone('America/Los_Angeles')
|
||||||
|
cn_timezone = pytz.timezone('Asia/Shanghai')
|
||||||
|
paris_timezone = pytz.timezone('Europe/Paris')
|
||||||
|
in_timezone = pytz.timezone('Asia/Kolkata')
|
||||||
|
|
||||||
|
counter = 0
|
||||||
|
|
||||||
|
if settings['display_pm'] and settings['display_seconds']:
|
||||||
|
x_offset = 72
|
||||||
|
elif settings['display_pm'] and not settings['display_seconds']:
|
||||||
|
x_offset = 87
|
||||||
|
elif not settings['display_pm'] and settings['display_seconds']:
|
||||||
|
x_offset = 87
|
||||||
|
else:
|
||||||
|
x_offset = 102
|
||||||
|
|
||||||
|
while True:
|
||||||
|
if 0 <= counter <= 4:
|
||||||
|
canvas.Clear()
|
||||||
|
#NEW YORK
|
||||||
|
ny_time = getTimes(ny_timezone)
|
||||||
|
#LONDON
|
||||||
|
london_time = getTimes(london_timezone)
|
||||||
|
#TOKYO TIME
|
||||||
|
tokyo_time = getTimes(tokyo_timezone)
|
||||||
|
|
||||||
|
ny_color = time_colors['day'] if isDaytime(ny_time) else time_colors['night']
|
||||||
|
london_color = time_colors['day'] if isDaytime(london_time) else time_colors['night']
|
||||||
|
tokyo_color = time_colors['day'] if isDaytime(tokyo_time) else time_colors['night']
|
||||||
|
|
||||||
|
graphics.DrawText(canvas, font, 2, 8, color, 'NEW YORK')
|
||||||
|
graphics.DrawText(canvas, font, x_offset, 8, ny_color, ny_time)
|
||||||
|
graphics.DrawLine(canvas, 0, 10, 128, 10, line_c)
|
||||||
|
graphics.DrawText(canvas, font, 2, 19, color, 'LONDON')
|
||||||
|
graphics.DrawText(canvas, font, x_offset, 19, london_color, london_time)
|
||||||
|
graphics.DrawLine(canvas, 0, 21, 128, 21, line_c)
|
||||||
|
graphics.DrawText(canvas, font, 2, 30, color, 'TOKYO')
|
||||||
|
graphics.DrawText(canvas, font, x_offset, 30, tokyo_color, tokyo_time)
|
||||||
|
canvas = matrix.SwapOnVSync(canvas)
|
||||||
|
|
||||||
|
counter += 1
|
||||||
|
# print("NY:", ny_time, "LONDON:", london_time, 'TOKYO:', tokyo_time)
|
||||||
|
|
||||||
|
elif 5 <= counter <= 9:
|
||||||
|
canvas.Clear()
|
||||||
|
#SYDNEY
|
||||||
|
au_time = getTimes(au_timezone)
|
||||||
|
#DUBAI
|
||||||
|
dubai_time = getTimes(dubai_timezone)
|
||||||
|
#LOS ANGELES
|
||||||
|
la_time = getTimes(la_timezone)
|
||||||
|
|
||||||
|
au_color = time_colors['day'] if isDaytime(au_time) else time_colors['night']
|
||||||
|
dubai_color = time_colors['day'] if isDaytime(dubai_time) else time_colors['night']
|
||||||
|
la_color = time_colors['day'] if isDaytime(la_time) else time_colors['night']
|
||||||
|
|
||||||
|
graphics.DrawText(canvas, font, x_offset, 8, au_color, au_time)
|
||||||
|
graphics.DrawText(canvas, font, 2, 8, color, 'SYDNEY')
|
||||||
|
graphics.DrawLine(canvas, 0, 10, 128, 10, line_c)
|
||||||
|
graphics.DrawText(canvas, font, x_offset, 19, dubai_color, dubai_time)
|
||||||
|
graphics.DrawText(canvas, font, 2, 19, color, 'DUBAI')
|
||||||
|
graphics.DrawLine(canvas, 0, 21, 128, 21, line_c)
|
||||||
|
graphics.DrawText(canvas, font, x_offset, 30, la_color, la_time)
|
||||||
|
graphics.DrawText(canvas, font, 2, 30, color, 'LOS ANGELES')
|
||||||
|
canvas = matrix.SwapOnVSync(canvas)
|
||||||
|
|
||||||
|
counter += 1
|
||||||
|
# print('DUBAI:', dubai_time, 'AU:', au_time, "LA:", la_time)
|
||||||
|
|
||||||
|
elif 10 <= counter <= 14:
|
||||||
|
canvas.Clear()
|
||||||
|
#SHANGHAI
|
||||||
|
cn_time = getTimes(cn_timezone)
|
||||||
|
#PARIS
|
||||||
|
paris_time = getTimes(paris_timezone)
|
||||||
|
#MUMBAI
|
||||||
|
in_time = getTimes(in_timezone)
|
||||||
|
|
||||||
|
cn_color = time_colors['day'] if isDaytime(cn_time) else time_colors['night']
|
||||||
|
paris_color = time_colors['day'] if isDaytime(paris_time) else time_colors['night']
|
||||||
|
in_color = time_colors['day'] if isDaytime(in_time) else time_colors['night']
|
||||||
|
|
||||||
|
graphics.DrawText(canvas, font, x_offset, 8, cn_color, cn_time)
|
||||||
|
graphics.DrawText(canvas, font, 2, 8, color, 'SHANGHAI')
|
||||||
|
graphics.DrawText(canvas, font, x_offset, 19, paris_color, paris_time)
|
||||||
|
graphics.DrawLine(canvas, 0, 10, 128, 10, line_c)
|
||||||
|
graphics.DrawText(canvas, font, 2, 19, color, 'PARIS')
|
||||||
|
graphics.DrawText(canvas, font, x_offset, 30, in_color, in_time)
|
||||||
|
graphics.DrawLine(canvas, 0, 21, 128, 21, line_c)
|
||||||
|
graphics.DrawText(canvas, font, 2, 30, color, 'MUMBAI')
|
||||||
|
canvas = matrix.SwapOnVSync(canvas)
|
||||||
|
|
||||||
|
counter += 1
|
||||||
|
# print("CN:", cn_time,"PARIS:", paris_time,"MUMBAI:", in_time)
|
||||||
|
if counter == 15:
|
||||||
|
counter = 0
|
||||||
|
|
||||||
|
time.sleep(1)
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user