updated clock screensavers to have json settings
This commit is contained in:
parent
a721ef66dc
commit
15a779363c
105
clock_screensaver.py
Normal file
105
clock_screensaver.py
Normal file
@ -0,0 +1,105 @@
|
|||||||
|
import time
|
||||||
|
from datetime import datetime
|
||||||
|
from rgbmatrix import RGBMatrix, RGBMatrixOptions, graphics
|
||||||
|
import json
|
||||||
|
import pytz
|
||||||
|
|
||||||
|
try:
|
||||||
|
with open('clock_screensaver.json', 'r') as f:
|
||||||
|
settings = json.load(f)['clock1']
|
||||||
|
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['clock1']
|
||||||
|
|
||||||
|
# Configuration for the LED matrix
|
||||||
|
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
|
||||||
|
options.brightness = 100
|
||||||
|
# Create the RGBMatrix object
|
||||||
|
matrix = RGBMatrix(options=options)
|
||||||
|
|
||||||
|
# Create a canvas to draw on
|
||||||
|
canvas = matrix.CreateFrameCanvas()
|
||||||
|
|
||||||
|
# Set the font and text color
|
||||||
|
font = graphics.Font()
|
||||||
|
font.LoadFont("fonts/6x12.bdf") # Change this to the path of your desired font file
|
||||||
|
font2 = graphics.Font()
|
||||||
|
font2.LoadFont("fonts/8x13B.bdf")
|
||||||
|
color = graphics.Color(255, 255, 255) # White color
|
||||||
|
|
||||||
|
timezone = pytz.timezone(settings['timezone'])
|
||||||
|
|
||||||
|
time_colors = {
|
||||||
|
"White": graphics.Color(255,255,255),
|
||||||
|
"Red": graphics.Color(255, 0,0),
|
||||||
|
"Green": graphics.Color(0,255,0),
|
||||||
|
"Dark Green": graphics.Color(0, 100,0),
|
||||||
|
"Blue": graphics.Color(0,0,255),
|
||||||
|
"Purple": graphics.Color(145,0,255),
|
||||||
|
"Pink": graphics.Color(255,0,255),
|
||||||
|
"Yellow": graphics.Color(255,255,0),
|
||||||
|
"Orange": graphics.Color(255,130,0),
|
||||||
|
"Gold": graphics.Color(255,190,0),
|
||||||
|
"Gray": graphics.Color(100,100,100),
|
||||||
|
"Cyan": graphics.Color(0,255,255)
|
||||||
|
}
|
||||||
|
|
||||||
|
while True:
|
||||||
|
# Clear the canvas
|
||||||
|
canvas.Clear()
|
||||||
|
|
||||||
|
# Get the current time, weekday, and date
|
||||||
|
if settings['12hour']:
|
||||||
|
if settings['display_pm'] and settings['display_seconds']:
|
||||||
|
current_time = datetime.now(timezone).strftime("%I:%M:%S %p")
|
||||||
|
elif settings['display_pm'] and not settings['display_seconds']:
|
||||||
|
current_time = datetime.now(timezone).strftime("%I:%M %p")
|
||||||
|
elif not settings['display_pm'] and settings['display_seconds']:
|
||||||
|
current_time = datetime.now(timezone).strftime("%I:%M:%S")
|
||||||
|
else:
|
||||||
|
current_time = datetime.now(timezone).strftime("%I:%M")
|
||||||
|
else:
|
||||||
|
if settings['display_pm'] and settings['display_seconds']:
|
||||||
|
current_time = datetime.now(timezone).strftime("%H:%M:%S %p")
|
||||||
|
elif settings['display_pm'] and not settings['display_seconds']:
|
||||||
|
current_time = datetime.now(timezone).strftime("%H:%M %p")
|
||||||
|
elif not settings['display_pm'] and settings['display_seconds']:
|
||||||
|
current_time = datetime.now(timezone).strftime("%H:%M:%S")
|
||||||
|
else:
|
||||||
|
current_time = datetime.now(timezone).strftime("%H:%M")
|
||||||
|
|
||||||
|
current_weekday = datetime.now(timezone).strftime("%A")
|
||||||
|
current_date = datetime.now(timezone).strftime("%d %b %Y")
|
||||||
|
|
||||||
|
weekday_width = graphics.DrawText(canvas, font, 0, 0, color, current_weekday.upper())
|
||||||
|
time_width = graphics.DrawText(canvas, font2, 0, 0, time_colors[settings['time_color']], current_time)
|
||||||
|
date_width = graphics.DrawText(canvas, font, 0, 0, time_colors[settings['date_color']], current_date.upper())
|
||||||
|
|
||||||
|
canvas.Clear()
|
||||||
|
|
||||||
|
x_coordinate_weekday = int((options.cols - weekday_width) / 2)
|
||||||
|
x_coordinate_time = int((options.cols - time_width) / 2)
|
||||||
|
x_coordinate_date = int((options.cols - date_width) /2)
|
||||||
|
|
||||||
|
# Draw the time, weekday, and date on the canvas
|
||||||
|
graphics.DrawText(canvas, font2, x_coordinate_time, 12, time_colors[settings['time_color']], current_time)
|
||||||
|
graphics.DrawText(canvas, font, x_coordinate_weekday, 22, time_colors[settings['weekday_color']], current_weekday.upper())
|
||||||
|
graphics.DrawText(canvas, font, x_coordinate_date, 31, time_colors[settings['date_color']], current_date.upper())
|
||||||
|
|
||||||
|
# Swap the canvas onto the matrix
|
||||||
|
canvas = matrix.SwapOnVSync(canvas)
|
||||||
|
|
||||||
|
# Wait for 1 second before updating the clock
|
||||||
|
time.sleep(1)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -26,7 +26,23 @@ canvas = matrix.CreateFrameCanvas()
|
|||||||
font = graphics.Font()
|
font = graphics.Font()
|
||||||
#font.LoadFont("fonts/clR6x12.bdf")
|
#font.LoadFont("fonts/clR6x12.bdf")
|
||||||
#font.LoadFont("fonts/6x12.bdf") # Change this to the path of your desired font file
|
#font.LoadFont("fonts/6x12.bdf") # Change this to the path of your desired font file
|
||||||
color = graphics.Color(255, 255, 255) # White color
|
|
||||||
|
city_colors = {
|
||||||
|
"White": graphics.Color(255,255,255),
|
||||||
|
"Red": graphics.Color(255, 0,0),
|
||||||
|
"Green": graphics.Color(0,255,0),
|
||||||
|
"Dark Green": graphics.Color(0, 100,0),
|
||||||
|
"Blue": graphics.Color(0,0,255),
|
||||||
|
"Purple": graphics.Color(145,0,255),
|
||||||
|
"Pink": graphics.Color(255,0,255),
|
||||||
|
"Yellow": graphics.Color(255,255,0),
|
||||||
|
"Orange": graphics.Color(255,130,0),
|
||||||
|
"Gold": graphics.Color(255,190,0),
|
||||||
|
"Gray": graphics.Color(100,100,100),
|
||||||
|
"Cyan": graphics.Color(0,255,255)
|
||||||
|
}
|
||||||
|
|
||||||
|
color = city_colors[settings['city_color']]
|
||||||
line_c = graphics.Color(50,50,50)
|
line_c = graphics.Color(50,50,50)
|
||||||
font.LoadFont("fonts/5x7.bdf")
|
font.LoadFont("fonts/5x7.bdf")
|
||||||
|
|
||||||
@ -35,6 +51,7 @@ time_colors = {
|
|||||||
"night": graphics.Color(0, 71,171), # Dark blue / purple color
|
"night": graphics.Color(0, 71,171), # Dark blue / purple color
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
# settings = {'display_seconds': True, 'display_pm': True, '12hour': False}
|
# settings = {'display_seconds': True, 'display_pm': True, '12hour': False}
|
||||||
|
|
||||||
def getTimes(timezone):
|
def getTimes(timezone):
|
||||||
|
Loading…
Reference in New Issue
Block a user