update to newst version

This commit is contained in:
zoe 2022-09-15 14:23:50 +02:00
parent 65122b9a53
commit 4928c3bbdb
3 changed files with 4039 additions and 3092 deletions

3932
Bm437_Paradise132_7x9-12.bdf Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

160
code.py
View File

@ -4,26 +4,33 @@ import gc
import board
import displayio
import random
import math
from adafruit_bitmap_font import bitmap_font
from adafruit_matrixportal.network import Network
from adafruit_matrixportal.matrix import Matrix
import adafruit_requests as requests
# statics
SPEED = 6 # should be even
SPEED = 24 # should be even
COLORS = [
0x50FA7B,
0xffb86c,
0xf1fa8c,
0xff5555,
0xff79c6,
0x8be9fd,
]
FONT = bitmap_font.load_font("/PICO-8ROMMono.bdf")
0xFFB86C,
0xF1FA8C,
0xFF5555,
0xFF79C6,
0x8BE9FD,
]
FONT = bitmap_font.load_font("/Bm437_Paradise132_7x9-12.bdf")
TEXTWIDTH = 7
tick = 0
def random_color():
return random.choice(COLORS)
# Get wifi details and more from a secrets.py file
try:
from secrets import secrets
@ -31,38 +38,50 @@ except ImportError:
print("WiFi secrets are kept in secrets.py, please add them there!")
raise
network = Network(debug=False, status_neopixel=board.NEOPIXEL,)
network = Network(
debug=False,
status_neopixel=board.NEOPIXEL,
)
matrix = Matrix()
display = matrix.display
upper_text_content = "jacking"
upper_text_content = " =^_^="
upper_text = Label(
FONT,
text=upper_text_content,
color=random_color(),
)
upper_text.y = 6
upper_text.y = 2
middle_text_content = " in"
decoration = Label(FONT, text="»»»»»»»»»»»»", color=random_color())
decoration.y = 10
middle_text_content = "jacking"
middle_text = Label(
FONT,
text=middle_text_content,
color=random_color(),
)
middle_text.y = 17
middle_text.y = 16
lower_text_content = "=^_^="
lower_text_content = " in..."
lower_text = Label(
FONT,
text=lower_text_content,
color=random_color(),
)
lower_text.y = 28
lower_text.y = 25
maingroup = displayio.Group()
g = displayio.Group()
g.append(upper_text)
maingroup.append(decoration)
g.append(middle_text)
g.append(lower_text)
display.show(g)
maingroup.append(g)
display.brightness = 0.01
display.auto_refresh = False
display.show(maingroup)
daynames = {
0: "monday",
@ -74,13 +93,17 @@ daynames = {
6: "sunday",
}
def sliceForTextField(s, i, max_chars=8) -> str:
def sliceForTextField(s, i, max_chars=10) -> str:
i = math.trunc(i)
if len(s) < max_chars:
return s
return str(s[i % len(s):] + " " + s[: i % len(s)])[:max_chars]
return str(s[i % len(s) :] + s[: i % len(s)])[:max_chars]
def update_content():
global middle_text_content, upper_text_content
global middle_text_content, upper_text_content, tick
tick = 0
try:
# set time from network
network.get_local_time()
@ -90,65 +113,96 @@ def update_content():
# get unread rss feeds
print("loading rss feeds")
headers = {"X-Auth-Token": secrets["miniflux_token"]}
rssresponse = requests.get(secrets["miniflux_url"] + "/entries?status=unread&direction=desc", headers=headers,)
rssresponse = requests.get(
secrets["miniflux_url"] + "/entries?status=unread&direction=desc",
headers=headers,
)
entries = rssresponse.json()["entries"]
rssresponse.close()
upper_text_content = str(len(entries)) + " unread entries"
upper_text_content = str(len(entries)) + " unread entries "
for e in entries:
gc.collect()
upper_text_content += " | " + e["feed"]["title"]
upper_text_content += "-" + e["title"]
upper_text_content += "|" + e["feed"]["title"]
upper_text_content += "-" + e["title"] + "| "
gc.collect()
except RuntimeError as e:
print("failed loading unread")
gc.collect()
try:
weatherresponse = requests.get("https://wttr.in/?format='%l:+%C+%t+%w+%h+humidty'")
middle_text_content = weatherresponse.text.replace("\n", " ").replace("'", "")
weatherresponse = requests.get(
"https://wttr.in/?format='%l:+%C+precipitation+%p+%t+%w+humidity+%h+dawn:+%D+dusk:+%d+uv:+%u'"
)
middle_text_content = (
weatherresponse.text.replace("\n", " ").replace("'", "") + " "
)
weatherresponse.close()
except RuntimeError as e:
print("failed getting weather")
def update_time():
global lower_text_content
now = time.localtime()
lower_text_content = "{dayname} {day}.{month}.{year} {hours}:{minutes}:{seconds}".format(
hours=now[3],
minutes=now[4],
seconds=now[5],
dayname=daynames[now[6]],
day=now[2],
month=now[1],
year=now[0],
lower_text_content = (
"{dayname} {day}.{month:02d}.{year} {hours:02d}:{minutes:02d}:{seconds:02d}".format(
hours= now[3],
minutes=now[4],
seconds=now[5],
dayname=daynames[now[6]],
day=now[2],
month=now[1],
year=now[0],
)
+ " "
)
def update(tick):
# do this once about every hour
if tick % (360 * SPEED) == 0:
update_content()
# do this every second
if tick % SPEED == 0:
update_time()
global display
if tick % (10 * SPEED) == 0:
upper_text.color = random_color()
middle_text.color = random_color()
lower_text.color = random_color()
lower_text.text = sliceForTextField(
lower_text_content,
tick,
decoration.color = random_color()
# do this once about every half hour
if tick % (1800 * SPEED) == 0:
update_content()
# do this every new letter
offset = 0 - tick % TEXTWIDTH
if offset == 0:
texttick = tick / TEXTWIDTH
update_time()
lower_text.text = sliceForTextField(
lower_text_content,
texttick,
)
middle_text.text = sliceForTextField(
middle_text_content,
tick,
)
upper_text.text = sliceForTextField(
upper_text_content,
tick,
middle_text.text = sliceForTextField(
middle_text_content,
texttick,
)
upper_text.text = sliceForTextField(
upper_text_content,
texttick,
)
g.x = offset
decoration.x = -1 * offset - TEXTWIDTH * 2
display.refresh(
minimum_frames_per_second=0,
target_frames_per_second=SPEED,
)
display.refresh(
minimum_frames_per_second=0,
target_frames_per_second=SPEED,
)
network.connect()
i = 0
while True:
update(i)
time.sleep(1 / SPEED)
i += 1
update(tick)
tick += 1