Add a fleet overview page that shows every printer's status at once.
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -87,7 +87,19 @@ inline void setup() {
|
||||
''')
|
||||
steps = [{'component.update': entry['id']}
|
||||
for section in ('sensor', 'text_sensor') for entry in package[section]]
|
||||
steps += [{'delay': '1s'}]
|
||||
steps += [{'delay': '1s'},
|
||||
{'lvgl.page.show': 'fleet_page'},
|
||||
{'script.execute': 'fleet_refresh'}, {'delay': '300ms'},
|
||||
{'snapshot.take': {'id': 'panel_display', 'filename': 'fleet.bmp'}},
|
||||
{'lambda': Lambda(
|
||||
'if (std::string(lv_label_get_text(id(fleet_summary))) != '
|
||||
+ json.dumps(f'{len(printers)} printing')
|
||||
+ ') { ESP_LOGE("preview", "Fleet summary render failed"); exit(7); }')}]
|
||||
for printer in printers:
|
||||
pid = printer['id']
|
||||
steps.append({'lambda': Lambda(
|
||||
f'if (std::string(lv_label_get_text(id({pid}_overview_status))) != "PRINTING") '
|
||||
f'{{ ESP_LOGE("preview", "Fleet row render failed: {pid}"); exit(7); }}')})
|
||||
for printer in printers:
|
||||
steps += [{'lvgl.page.show': printer['id'] + '_page'},
|
||||
{'script.execute': printer['id'] + '_refresh'}, {'delay': '300ms'},
|
||||
@@ -125,7 +137,7 @@ inline void setup() {
|
||||
{'lvgl.widget.hide': demo_printer + '_health_panel'},
|
||||
{'text_sensor.template.publish': {'id': demo_printer + '_hms_error', 'state': 'off'}},
|
||||
{'script.execute': demo_printer + '_refresh'}]
|
||||
steps += [{'lvgl.page.show': printers[0]['id'] + '_page'}, {'delay': '250ms'},
|
||||
steps += [{'lvgl.page.show': 'fleet_page'}, {'delay': '250ms'},
|
||||
{'lambda': Lambda('bambu_preview::setup();')}]
|
||||
for x, y, expect_hidden in [(690, 30, False), (700, 394, True)]:
|
||||
steps += [
|
||||
@@ -136,11 +148,13 @@ inline void setup() {
|
||||
if len(printers) > 1:
|
||||
# First -> second -> first -> last -> first, then a swipe starting
|
||||
# on NEXT must advance exactly once even when released over PREV.
|
||||
gestures = [(650, 180, 180, printers[1]['id']),
|
||||
(180, 650, 180, printers[0]['id']),
|
||||
# Fleet -> first printer -> fleet -> last printer -> fleet, then a
|
||||
# swipe starting on NEXT advances exactly once.
|
||||
gestures = [(650, 180, 180, printers[0]['id']),
|
||||
(180, 650, 180, 'fleet'),
|
||||
(180, 650, 180, printers[-1]['id']),
|
||||
(650, 180, 180, printers[0]['id']),
|
||||
(730, 60, 460, printers[1]['id'])]
|
||||
(650, 180, 180, 'fleet'),
|
||||
(730, 60, 460, printers[0]['id'])]
|
||||
for start, end, y, expected in gestures:
|
||||
steps += [
|
||||
{'lambda': Lambda(f'bambu_preview::x = {start}; bambu_preview::y = {y}; bambu_preview::pressed = true;')},
|
||||
@@ -165,7 +179,7 @@ inline void setup() {
|
||||
subprocess.run(['esphome', 'compile', str(filename)], check=True)
|
||||
binary = root / '.esphome/build/bambu-display-preview/.pioenvs/bambu-display-preview/program'
|
||||
subprocess.run([str(binary)], check=True, timeout=30, cwd=root)
|
||||
for name in [printer['id'] for printer in printers] + ['color_test', 'health_notice']:
|
||||
for name in ['fleet'] + [printer['id'] for printer in printers] + ['color_test', 'health_notice']:
|
||||
bmp = root / '.esphome/snapshots/bambu-display-preview' / (name + '.bmp')
|
||||
with Image.open(bmp) as image:
|
||||
image.save(args.output / (name + '.png'))
|
||||
|
||||
Reference in New Issue
Block a user