Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 17 additions & 1 deletion app.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,15 @@

from flask import Flask, request, render_template, redirect, url_for

from config import BASE_URL, AUTO_SPEND, SPOOLMAN_BASE_URL, EXTERNAL_SPOOL_AMS_ID, EXTERNAL_SPOOL_ID, PRINTER_NAME
from config import (
BASE_URL,
AUTO_SPEND,
SPOOLMAN_BASE_URL,
EXTERNAL_SPOOL_AMS_ID,
EXTERNAL_SPOOL_ID,
PRINTER_NAME,
CLEAR_ASSIGNMENT_WHEN_EMPTY,
)
from filament import generate_filament_brand_code, generate_filament_temperatures
from frontend_utils import color_is_dark
from messages import AMS_FILAMENT_SETTING
Expand Down Expand Up @@ -84,6 +92,14 @@ def _augment_tray(spool_list, tray_data, ams_id, tray_id):
if tray_data.get("unmapped_bambu_tag"):
spoolman_service.clear_active_spool_for_tray(ams_id, tray_id)
augmentTrayDataWithSpoolMan(spool_list, tray_data, ams_id, tray_id)
empty_condition = (
CLEAR_ASSIGNMENT_WHEN_EMPTY
and not tray_data.get("spool_material")
and not tray_data.get("unmapped_bambu_tag")
)
if empty_condition:
spoolman_service.clear_active_spool_for_tray(ams_id, tray_id)
mqtt_bambulab.clear_ams_tray_assignment(ams_id, tray_id)

@app.route("/issue")
def issue():
Expand Down
97 changes: 49 additions & 48 deletions mqtt_bambulab.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,17 +8,17 @@

import paho.mqtt.client as mqtt

from config import (
PRINTER_ID,
PRINTER_CODE,
PRINTER_IP,
AUTO_SPEND,
EXTERNAL_SPOOL_ID,
TRACK_LAYER_USAGE,
CLEAR_ASSIGNMENT_WHEN_EMPTY,
)
from messages import GET_VERSION, PUSH_ALL, AMS_FILAMENT_SETTING
from spoolman_service import spendFilaments, setActiveTray, fetchSpools, clear_active_spool_for_tray
from config import (
PRINTER_ID,
PRINTER_CODE,
PRINTER_IP,
AUTO_SPEND,
EXTERNAL_SPOOL_ID,
TRACK_LAYER_USAGE,
CLEAR_ASSIGNMENT_WHEN_EMPTY,
)
from messages import GET_VERSION, PUSH_ALL, AMS_FILAMENT_SETTING
from spoolman_service import spendFilaments, setActiveTray, fetchSpools, clear_active_spool_for_tray
from tools_3mf import getMetaDataFrom3mf
import time
import copy
Expand Down Expand Up @@ -368,32 +368,32 @@ def processMessage(data):

PRINTER_STATE_LAST = copy.deepcopy(PRINTER_STATE)

def publish(client, msg):
result = client.publish(f"device/{PRINTER_ID}/request", json.dumps(msg))
status = result[0]
if status == 0:
print(f"Sent {msg} to topic device/{PRINTER_ID}/request")
return True

print(f"Failed to send message to topic device/{PRINTER_ID}/request")
return False


def clear_ams_tray_assignment(ams_id, tray_id):
if not MQTT_CLIENT:
return

ams_message = copy.deepcopy(AMS_FILAMENT_SETTING)
ams_message["print"]["ams_id"] = int(ams_id)
ams_message["print"]["tray_id"] = int(tray_id)
ams_message["print"]["tray_color"] = ""
ams_message["print"]["nozzle_temp_min"] = None
ams_message["print"]["nozzle_temp_max"] = None
ams_message["print"]["tray_type"] = ""
ams_message["print"]["setting_id"] = ""
ams_message["print"]["tray_info_idx"] = ""

publish(MQTT_CLIENT, ams_message)
def publish(client, msg):
result = client.publish(f"device/{PRINTER_ID}/request", json.dumps(msg))
status = result[0]
if status == 0:
print(f"Sent {msg} to topic device/{PRINTER_ID}/request")
return True
print(f"Failed to send message to topic device/{PRINTER_ID}/request")
return False
def clear_ams_tray_assignment(ams_id, tray_id):
if not MQTT_CLIENT:
return
ams_message = copy.deepcopy(AMS_FILAMENT_SETTING)
ams_message["print"]["ams_id"] = int(ams_id)
ams_message["print"]["tray_id"] = int(tray_id)
ams_message["print"]["tray_color"] = ""
ams_message["print"]["nozzle_temp_min"] = None
ams_message["print"]["nozzle_temp_max"] = None
ams_message["print"]["tray_type"] = ""
ams_message["print"]["setting_id"] = ""
ams_message["print"]["tray_info_idx"] = ""
publish(MQTT_CLIENT, ams_message)

# Inspired by https://github.com/Donkie/Spoolman/issues/217#issuecomment-2303022970
def on_message(client, userdata, msg):
Expand Down Expand Up @@ -459,17 +459,18 @@ def on_message(client, userdata, msg):
# "remaining_weight": tray["remain"] / 100 * tray["tray_weight"]
# })

if not found and tray_uuid == "00000000000000000000000000000000":
print(" - No Spool or non Bambulab Spool!")
if CLEAR_ASSIGNMENT_WHEN_EMPTY:
clear_active_spool_for_tray(ams['id'], tray['id'])
clear_ams_tray_assignment(ams['id'], tray['id'])
elif not found:
print(" - Not found. Update spool tag!")
tray["unmapped_bambu_tag"] = tray_uuid
tray["issue"] = True
clear_active_spool_for_tray(ams['id'], tray['id'])
clear_ams_tray_assignment(ams['id'], tray['id'])
if not found and tray_uuid == "00000000000000000000000000000000":
print(" - non Bambulab Spool!")
elif not found:
print(" - Not found. Update spool tag!")
tray["unmapped_bambu_tag"] = tray_uuid
tray["issue"] = True
clear_active_spool_for_tray(ams['id'], tray['id'])
clear_ams_tray_assignment(ams['id'], tray['id'])
else:
print(
f" - [{num2letter(ams['id'])}{tray['id']}]")
print(" - No Spool!")

except Exception:
traceback.print_exc()
Expand Down
2 changes: 1 addition & 1 deletion templates/fragments/tray.html
Original file line number Diff line number Diff line change
Expand Up @@ -96,7 +96,7 @@
<span class="badge d-inline-block p-2"
style="background-color: #{{ tray_data.spool_color }};
color: {% if color_is_dark(tray_data.spool_color) %}#FFFFFF{% else %}#000000{% endif %}">
#{{ tray_data.tray_color | upper }}
#{{ tray_data.spool_color | upper }}
</span>
{% endif %}
</div>
Expand Down