From 6d7eada993ae87bc28782253efc3034194b92e15 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Filip=20Bedn=C3=A1rik?= Date: Fri, 13 Dec 2024 11:44:00 +0100 Subject: [PATCH] Improvement: Better communication with user while using NFC Improvement: Skip updating SpoolMan when there is no change in active tray --- app.py | 11 ++++++++--- mqtt_bambulab.py | 24 +++++++++++++++--------- 2 files changed, 23 insertions(+), 12 deletions(-) diff --git a/app.py b/app.py index 8db9657..123d38b 100644 --- a/app.py +++ b/app.py @@ -1,4 +1,5 @@ import json +import traceback import uuid from flask import Flask, request, render_template_string @@ -120,6 +121,7 @@ def tray_load():

Updated Spool ID {spool_id} with TAG id {tag_id} to AMS {ams_id}, Tray {tray_id}.

""" except Exception as e: + traceback.print_exc() return f"

Error

{str(e)}

" @@ -162,11 +164,12 @@ def home(): " return html except Exception as e: + traceback.print_exc() return f"

Error

{str(e)}

" @@ -189,12 +192,13 @@ def assign_tag(): @@ -202,6 +206,7 @@ def assign_tag(): NFC Write +

""" diff --git a/mqtt_bambulab.py b/mqtt_bambulab.py index f52d35b..288db0a 100644 --- a/mqtt_bambulab.py +++ b/mqtt_bambulab.py @@ -31,7 +31,7 @@ def on_message(client, userdata, msg): # TODO: Consume spool try: data = json.loads(msg.payload.decode()) - print(data) + #print(data) if "print" in data and "vt_tray" in data["print"]: print(data) LAST_AMS_CONFIG["vt_tray"] = data["print"]["vt_tray"] @@ -79,15 +79,21 @@ def on_connect(client, userdata, flags, rc): def setActiveTray(spool_id, spool_extra, ams_id, tray_id): - patchExtraTags(spool_id, spool_extra, { - "active_tray": json.dumps(f"{PRINTER_ID}_{ams_id}_{tray_id}"), - }) + if spool_extra == None: + spool_extra = {} - # Remove active tray from inactive spools - for old_spool in SPOOLS: - if spool_id != old_spool["id"] and old_spool["extra"]["active_tray"] == json.dumps( - f"{PRINTER_ID}_{ams_id}_{tray_id}"): - patchExtraTags(old_spool["id"], old_spool["extra"], {"active_tray": json.dumps("")}) + if not spool_extra.get("active_tray") or spool_extra.get("active_tray") != json.dumps(f"{PRINTER_ID}_{ams_id}_{tray_id}"): + patchExtraTags(spool_id, spool_extra, { + "active_tray": json.dumps(f"{PRINTER_ID}_{ams_id}_{tray_id}"), + }) + + # Remove active tray from inactive spools + for old_spool in SPOOLS: + if spool_id != old_spool["id"] and old_spool["extra"]["active_tray"] == json.dumps( + f"{PRINTER_ID}_{ams_id}_{tray_id}"): + patchExtraTags(old_spool["id"], old_spool["extra"], {"active_tray": json.dumps("")}) + else: + print("Skipping set active tray") # Fetch spools from spoolman