mirror of
https://github.com/maziggy/bambuddy.git
synced 2026-10-17 11:25:48 +02:00
[Feature]: HMS Actions (#1743)
This commit is contained in:
@@ -0,0 +1,81 @@
|
||||
import asyncio
|
||||
import json
|
||||
|
||||
import requests
|
||||
|
||||
HMS_ACTIONS_JSON_PATH = "backend/app/data/hms_actions.json"
|
||||
HMS_REQUEST_URL = "https://e.bambulab.com/hms/GetActionImage.php"
|
||||
|
||||
HMS_ID_TO_ACTION_NAME_MAP: dict[int, str] = {
|
||||
2: "RESUME_PRINTING",
|
||||
3: "RESUME_PRINTING_DEFECTS",
|
||||
4: "RESUME_PRINTING_PROBELM_SOLVED",
|
||||
5: "STOP_PRINTING",
|
||||
6: "CHECK_ASSISTANT",
|
||||
7: "FILAMENT_EXTRUDED",
|
||||
8: "RETRY_FILAMENT_EXTRUDED",
|
||||
9: "CONTINUE",
|
||||
10: "LOAD_VIRTUAL_TRAY",
|
||||
11: "OK_BUTTON",
|
||||
12: "FILAMENT_LOAD_RESUME",
|
||||
13: "JUMP_TO_LIVEVIEW",
|
||||
23: "NO_REMINDER_NEXT_TIME",
|
||||
24: "REFRESH_NOZZLE",
|
||||
25: "IGNORE_NO_REMINDER_NEXT_TIME",
|
||||
27: "IGNORE_RESUME",
|
||||
28: "PROBLEM_SOLVED_RESUME",
|
||||
29: "TURN_OFF_FIRE_ALARM",
|
||||
34: "RETRY_PROBLEM_SOLVED",
|
||||
35: "STOP_DRYING",
|
||||
37: "CANCLE", # Note: "CANCLE" is intentionally misspelled in the BambuStudio source code
|
||||
39: "REMOVE_CLOSE_BTN",
|
||||
41: "PROCEED",
|
||||
49: "OK_JUMP_RACK",
|
||||
51: "ABORT",
|
||||
54: "DISABLE_PURIFICATION",
|
||||
57: "DONT_REMIND_NEXT_TIME",
|
||||
10000: "DBL_CHECK_CANCEL",
|
||||
10001: "DBL_CHECK_DONE",
|
||||
10002: "DBL_CHECK_RETRY",
|
||||
10003: "DBL_CHECK_RESUME",
|
||||
10004: "DBL_CHECK_OK",
|
||||
}
|
||||
|
||||
|
||||
async def main():
|
||||
error_to_action_map: dict[str, list[str]] = {}
|
||||
# get the json response from the url
|
||||
response = requests.get(HMS_REQUEST_URL)
|
||||
if response.status_code == 200:
|
||||
data = response.json()
|
||||
ready_data = {}
|
||||
for item in data["data"]:
|
||||
# error_code = item["ecode"][:4] + "_" + item["ecode"][4:]
|
||||
mapped_actions = []
|
||||
for hms_id in item["actions"]:
|
||||
if hms_id not in HMS_ID_TO_ACTION_NAME_MAP:
|
||||
print(f"Warning: Unrecognized HMS action ID {hms_id} for error code {item['ecode']}")
|
||||
else:
|
||||
mapped_actions.append(HMS_ID_TO_ACTION_NAME_MAP.get(hms_id, f"UNKNOWN_ACTION_{hms_id}"))
|
||||
print(f"ecode: {item['ecode']}, actions: {mapped_actions}, device: {item['device']}")
|
||||
if item["device"] not in ready_data:
|
||||
ready_data[item["device"]] = {}
|
||||
ready_data[item["device"]][item["ecode"]] = mapped_actions
|
||||
# ready_data.append(
|
||||
# {
|
||||
# "ecode": item["ecode"],
|
||||
# "actions": mapped_actions,
|
||||
# "device": item["device"],
|
||||
# }
|
||||
# )
|
||||
with open(HMS_ACTIONS_JSON_PATH, "w") as f:
|
||||
json.dump(ready_data, f, indent=4)
|
||||
else:
|
||||
print("Failed to fetch data")
|
||||
print(error_to_action_map)
|
||||
|
||||
# autogenerate
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
asyncio.run(main())
|
||||
Reference in New Issue
Block a user