Most of these I’ve got translated in the NR flow. But I’ll put what I know here. Also there are plenty of other weird data values from each AMS blurb I see you’re missing here. Do you also want that?
{
"print": {
"ams_rfid_status": 0, // ??? - I assume when it's actively reading something but cannot confirm.
"ams_status": 0, // ???
"bed_target_temper": 0.0, // Target Bed Temp
"bed_temper": 18.0, // Current Bed Temp
"big_fan1_speed": "0", // Aux Fan
"big_fan2_speed": "0", // Chamber Fan
"chamber_temper": 25.0, // Chamber Temp
"command": "push_status", // push_status is the main receive command. There are many other commands, some receive only, some work both ways.
"cooling_fan_speed": "0", // Part Cooling Fan - on the magnetic cover of hotend but not hotend fan
"fail_reason": "0", // ??? This is potentially documented on their wiki but I've never actually seen it last more than a few seconds with any status.
"fan_gear": 0, // ???
"force_upgrade": false, // ???
"gcode_file": "/data/Metadata/plate_1.gcode", // Default name, even if it runs a different file this is the gcode_file. This is essentially useless and should look at the "sub_task" instead.
"gcode_file_prepare_percent": "0", // Print Prep % - with how quick it is, this lasts only a few seconds. Essentially useless to monitor
"gcode_start_time": "1673459423", // Start timestamp
"gcode_state": "FINISH", // IDLE / RUNNING / FINISH / FAILED / PAUSE are all the ones I've seen/mapped
"heatbreak_fan_speed": "15", // Hotend fan for the heatbreak.
"hms": [ // HMS Status codes - wiki/slicer has more info on them but honestly feel like it isn't fully implemented yet.
{
"attr": 50336000,
"code": 131074
},
{
"attr": 50335744,
"code": 131074
},
{
"attr": 201327360,
"code": 196616
}
],
"home_flag": 328, // ??? - Assuming the flag if the printer has been homed or not. Mine is 256 when I just turn on the printer. Not sure.
"hw_switch_state": 0, // ??? - Thought it was the power on/off button, but that did not change it.
"ipcam": {
"ipcam_dev": "1", // ??
"ipcam_record": "enable", // If recording of full video is enabled (not timelapse)
"resolution": "1080p", // Camera resolution - 720p, 1080p.
"timelapse": "disable" // Timelapse Enabled
},
"lifecycle": "product", // ??? - Probably left over from R&D, to identify if it's a testing unit or if it's made it off the shelf into product lifecycle.
"lights_report": [ // Light Statuses
{
"mode": "on", // ON/OFF, toggleable
"node": "chamber_light"
},
{
"mode": "flashing",
"node": "work_light"
}
],
"mc_percent": 100, // Print progress percentage - includes progress from calibration and other steps
"mc_print_error_code": "0", // ?? - print specific error codes
"mc_print_stage": "1", // ?? - print specific stage id's, not sure if any relation to action id's
"mc_print_sub_stage": 0, // ?? - same thought as above?
"mc_remaining_time": 0, // Print time remaining in minutes - is altered when speed profile changes :)
"mess_production_state": "active", // ???
"nozzle_target_temper": 150.0, // Target Nozzle Temp
"nozzle_temper": 143.0, // Current Nozzle Temp
"online": {
"ahb": false, // ???
"rfid": false // ???
},
"print_error": 0, // Error status codes, no mapping to them yet mostly because it sometimes clears
"print_gcode_action": 255, // ???
"print_real_action": 0, // ???
"print_type": "cloud", // Assuming Cloud & LAN. SD is not a value. This only changes if you go into lan only mode as printing via sd card still has type cloud in lan mode off.
"profile_id": "1143024", // Profile id from 3mf file for printjob
"project_id": "1143026", // Project id from 3mf file for printjob
"sdcard": true, // Is there an SD Card inserted
"sequence_id": "2021", // The sequence ID of this status message
"spd_lvl": 2, // 1/Silent, 2/Standard, 3/Sport, 4/Ludicrous
"spd_mag": 100, // 50/Silent, 100/Standard, 124/Sport, 166%/Ludicrous
"stg": [ // Previous stages of the printer, see Screenshot for mapping
2,
14,
1
],
"stg_cur": -1, // Current stage of printer, see Screenshot for mapping
"subtask_id": "2200283", // ID of the printjob defined by 3mf file
"subtask_name": "Canister_plate_1", // Model/3mf/job name. Closest you get to real gcode - I use this to fetch the print preview image from a FTP file download for example.
"task_id": "2200282", // Print task id.
"upgrade_state": { // ??? - I assume if there's a new version of firmware detected for download, these get filled.
"ahb_new_version_number": "",
"ams_new_version_number": "",
"consistency_request": false,
"dis_state": 0,
"err_code": 0,
"force_upgrade": false,
"message": "",
"module": "null",
"new_version_state": 2,
"ota_new_version_number": "",
"progress": "0",
"sequence_id": 0,
"status": "IDLE"
},
"upload": { // Progress when uploading a file to the printer, happens very fast then rests so not totally useful.
"file_size": 0,
"finish_size": 0,
"message": "Good",
"oss_url": "",
"progress": 0,
"sequence_id": "0903",
"speed": 0,
"status": "idle",
"task_id": "",
"time_remaining": 0,
"trouble_id": ""
},
"wifi_signal": "-37dBm", // Wifi Strength
"xcam": {
"allow_skip_parts": false, // ??? - I think this is an upcoming feature to skip failed parts in a multi-part print that some other slicers have, but bambu doesn't yet, judging by name.
"buildplate_marker_detector": true, // Scans the Barcodes on the plates for assurance
"first_layer_inspector": true, // As name
"halt_print_sensitivity": "medium", // AI Sensititivty
"print_halt": true, // Pause on error
"printing_monitor": true, // AI monitoring
"spaghetti_detector": true // Spaghetti section on
},
"xcam_status": "0" // ??? - Assumed this was lidar but didn't change so not sure.
}
}
For the action id’s (stg array, stg_cur) this is the mapping we have for them, mostly taken from their wiki and snooping around. Ignore -2 Offline, I inject that in my flow.
Also all fan speeds are numbers from 1-15, and are translated to percentages via:
![image](https://community-assets.home-assistant.io/original/4X/8/9/4/89422cbb198a336e6085246b8711a492c98a2c31.png)