Toggle Navigation
Hatchery
Eggs
Badgeric
__init__.py
Users
Badges
Login
Register
MCH2022 badge?
go to mch2022.badge.team
__init__.py
raw
Content
import ugfx import badge import easywifi import gc import urequests as requests import time import dialogs jobs = [ { 'content': [ {'text': "Eric Darchis", 'y': 1, 'font': "PermanentMarker36"}, {'text': "Freelance Dev-Ops-Sec", 'y': 36, 'font': "DejaVuSans20"}, {'text': "Java, Groovy/Grails, Angular", 'y': 61, 'font': "DejaVuSans20"}], 'delay': 10 }, { 'content': [ {'text': "@edarchis", 'y': 1, 'font': "PermanentMarker36"} ], 'delay': 10 } ] def url_chosen(new_url): global badgeUrl if new_url: badgeUrl = new_url badge.nvs_set_str("badgeric", "url", badgeUrl) print("init") ugfx.init() ugfx.input_attach(ugfx.BTN_A, refresh) ugfx.input_attach(ugfx.BTN_B, go_home) ugfx.clear(ugfx.WHITE) ugfx.flush() print("init done") refresh() main() refreshing = False dataVersion = 0 badgeUrl = badge.nvs_get_str("badgeric", "url", "http://darchis.be/eric/badge.json") badgeUrl = dialogs.prompt_text("Badge JSON URL", badgeUrl, cb=url_chosen) def go_home(pushed): if pushed: import machine machine.deepsleep(1) def refresh(): global refreshing global dataVersion global jobs global badgeUrl refreshing = True ugfx.string(10, 10, "Downloading JSON", "Roboto_Regular12", 0) ugfx.flush() #gc.collect() print("wifi") easywifi.enable() while not easywifi.status(): time.sleep(0.1) pass try: data = requests.get(badgeUrl) except: ugfx.string(10, 10, "Could not download JSON", "Roboto_Regular12", 0) ugfx.flush() easywifi.disable() time.sleep(5) go_home(1) return try: global output jobs = data.json() refreshing = False dataVersion += 1 except: data.close() ugfx.string(10, 10, "Cannot understand shit", "Roboto_Regular12", 0) ugfx.flush() easywifi.disable() time.sleep(5) go_home(1) return data.close() easywifi.disable() def main(): global refreshing global dataVersion global jobs while True: if refreshing or dataVersion == 0: time.sleep(1) else: current_version = dataVersion for job in jobs: ugfx.clear() for row in job['content']: ugfx.string_box(0, row['y'], 296, row['y'] + 42, row['text'], row['font'], ugfx.BLACK, ugfx.justifyCenter) ugfx.flush(ugfx.LUT_FULL) badge.eink_busy_wait() if refreshing or dataVersion != current_version: break time.sleep(job['delay']) if refreshing or dataVersion != current_version: break