diff --git a/inky_convert.sh b/inky_convert.sh index 858c77c1f4046eeb9a47d26a9c051847331503a8..09e2297c02580dd1e51301cd05c4ff81c4860c3e 100644 --- a/inky_convert.sh +++ b/inky_convert.sh @@ -1,2 +1,2 @@ #!/bin/bash -convert "$1" -resize '800x480!' -define modulate:colorspace=HSB -modulate 100,120 -level 2% -quality 70 "${1%.*}.inky.jpeg" +convert "$1" -resize '800x480!' -define modulate:colorspace=HSB -modulate 100,120 -level 2% -quality 60 -define jpeg:extent=120kb "${1%.*}.inky.jpeg" diff --git a/main.py b/main.py index 34d08eacc34a075ac4d4c63330aa20c3173d4be0..a91fd0af87e7b480715dddc8cd755230e7ed1882 100644 --- a/main.py +++ b/main.py @@ -5,20 +5,25 @@ import inky_frame import gc import random +def write_err(text): + with open('/sd/errors.log', 'a+') as error_log: + error_log.write(f'{text} \n') + +gc.enable() +gc.threshold(50000) sd_spi = machine.SPI(0, sck=machine.Pin(18, machine.Pin.OUT), mosi=machine.Pin(19, machine.Pin.OUT), miso=machine.Pin(16, machine.Pin.OUT)) sd = sdcard.SDCard(sd_spi, machine.Pin(22)) uos.mount(sd, "/sd") -gc.collect() from secrets import WIFI_SSID, WIFI_PASSWORD, NEXTCLOUD_USERNAME, NEXTCLOUD_PASSWORD try: ih.network_connect_better(WIFI_SSID, WIFI_PASSWORD) except RuntimeError as e: print(e) - with open('/sd/errors.log', 'a+') as error_log: - error_log.write(f'{e} \n') + write_err(e) #Likely a network oops, try starting again + uos.umount("/sd") machine.soft_reset() try: @@ -27,9 +32,9 @@ try: response = nc.get_folder_items("eink-frame") except OSError as e: print(e) - with open('/sd/errors.log', 'a+') as error_log: - error_log.write(f'{e} \n') + write_err(e) #Likely a network oops, try starting again + uos.umount("/sd") machine.soft_reset() try: @@ -48,9 +53,8 @@ if response != None: with open('/sd/last_wallpaper', 'w+') as update_last: update_last.write(ran.url_path) print(ran.url_path) - gc.collect() + print(gc.mem_free()) nc.download_file_to_path(ran.url_path, "/sd/current_image.jpg") - gc.collect() from picographics import PicoGraphics, DISPLAY_INKY_FRAME_7 as DISPLAY from jpegdec import JPEG graphics = PicoGraphics(DISPLAY) @@ -60,4 +64,5 @@ if response != None: j.decode() graphics.update() +uos.umount("/sd") inky_frame.sleep_for(180) diff --git a/uNextcloud.py b/uNextcloud.py index 1b52b67d1f6cef3a582c90a779b66cb62c6e8596..9fb492eb1c1b278de8d5f904b30f300bd6a564d5 100644 --- a/uNextcloud.py +++ b/uNextcloud.py @@ -1,5 +1,4 @@ import urequests -import gc, sys import ElementTree @@ -40,33 +39,28 @@ class uNextcloud: if content_type != None: file_list.append(self.File(href.text, content_type.text)) response.close() - gc.collect() return file_list except AttributeError: response.close() - gc.collect() return None else: response.close() - gc.collect() return None def download_file_to_path(self, url_path, destination_path): response = urequests.request("GET", self.url+url_path, auth=(self.username, self.password)) if 200 <= response.status_code < 300: - dest = open(destination_path, 'wb') - data = bytearray(1024) len = 0 - while True: - print(f"downloaded {len}") - gc.collect() - if response.raw.readinto(data) == 0: - break - len += 1024 - dest.write(data) - dest.close() + with open(destination_path, 'wb') as dest: + data = bytearray(1024) + while True: + print(f"downloaded {len}") + if response.raw.readinto(data) == 0: + break + len += 1024 + dest.write(data) + dest.flush() response.close() - gc.collect() else: response.close() raise Exception()