Support M191 G-Code Command (Wait for Chamber Temperature)

The X1C doesn’t have an actively heated chamber so it makes sense that this M-code would be disabled.

4 Likes

Correct. It seems that trying to use that code as a way of waiting for the ambient air in the chamber to be heated by the bed does not work either.
There is a chamber temperature sensor in the X1C, but you can’t interact with it at all at this point in time.

Not at all, the bed is very capable of heating the chamber to 60c alone, makes no sense to go out of their way to disable the M-code and the thread your writing in proves it. There is a reason we want it.

The bed might heat the chamber to 60c when running on 220v but it struggles to make 50c on 110v or at least mine does.

3 Likes

Still sounds like it capable of heating the chamber 20c above room temperature and would be a lot better with an M191 instead of 5x sleeps.

I have found that I need to pre-heat the chamber to print ABS and ASA on my X1 Carbon
I use a Home Assistant Automation as a workaround, I use the Bambu Labs integration available on the Home assistant Community Store.
I trigger on current_stage changing to printing and then check the active_Tray Type and if it contains “ABS” or “ASA” and the chamber_temperature is bellow a number that I set as a minimum then the automation will pause the print and wait for the chamber_temperature to reach the desired temperature. Once the desired temperature is reached the automation will resume the print.
Other filament types that need chamber pre-heating could easily be added to the automation, I just don’t have any yet.
By using the automation, I just send my ABS or ASA print to the printer just like any other print and the chamber pre-heat will be taken care of for me.

Hello, would you be kind enough to share one of your automations? I’m currently exploring the Home Assistant interface and facing some difficulties creating an automation for the automatic activation of my bentobox when, like you, I’m printing with ASA or ABS (specially around triggers).
Your assistance would save me valuable time :wink:

Here is the YAML for the automation to Pause and wait for the temp to reach a set temperature, I use a numeric helper called minimum_chamber_temp where I can set the desired minimum temperature using a dashboard card. This could easily just be set as a specific number in the YAML code.
I trigger on current_stage changing to printing and then use a Condition to check the active_Tray Type using a value template and if it contains “ABS” or “ASA” another condition is used to check the chamber_temperature and if it is below the number saved in the helper called minimum_chamber_temp then the
Action is to press the Pause button and wait for a trigger that the Temperature has reached the desired value (it times out after 30 minutes but could be set to any desired timeout value. Then the resume button is pressed.
YAML will not post properly here, it turns the dashes into bullets. Your entity ID’s will all be different. Hopefully this will be helpful.

alias: Bambu ABS or ASA Pause if chamber temp to low
description: “”
trigger:

  • platform: state
    entity_id:
    • sensor.x1c_00m09a351801070_current_stage
      to: printing
      condition:
  • condition: template
    value_template: >-
    {{ (‘ABS’ in state_attr(‘sensor.x1c_00m09a351801070_active_tray’, ‘type’))
    == true or (‘ASA’ in state_attr(‘sensor.x1c_00m09a351801070_active_tray’,
    ‘type’)) == true }}
  • condition: numeric_state
    entity_id: sensor.x1c_00m09a351801070_chamber_temperature
    below: input_number.minimum_chamber_temp
  • condition: numeric_state
    entity_id: sensor.x1c_00m09a351801070_current_layer
    below: 2
    action:
  • device_id: 1410b1f809015e11b8524d144965da0d
    domain: button
    entity_id: 2f1945e92beb3ed71f8d23f789542b41
    type: press
  • wait_for_trigger:
    • platform: template
      value_template: >-
      {{ int(states(‘sensor.x1c_00m09a351801070_chamber_temperature’)) >
      int(states(‘input_number.minimum_chamber_temp’)) -1 }}
      timeout:
      hours: 0
      minutes: 30
      seconds: 0
      milliseconds: 0
  • device_id: 1410b1f809015e11b8524d144965da0d
    domain: button
    entity_id: 86017eca567b8875f6735e4654b0ccad
    type: press
    mode: single

The following is the YAML code to keep the internal light off, I have a Riser light and a camera on the front door, I get a better picture on the camera with the internal light off.
alias: Bambu x1c keep internal Light off
description: “”
trigger:

  • platform: device
    type: turned_on
    device_id: 1410b1f809015e11b8524d144965da0d
    entity_id: 49c5b73154eec4a5486e3160bc31b565
    domain: light
    condition:
  • condition: state
    entity_id: input_boolean.x1c_internal_light_desired_state
    state: “off”
    action:
  • type: turn_off
    device_id: 1410b1f809015e11b8524d144965da0d
    entity_id: 49c5b73154eec4a5486e3160bc31b565
    domain: light
    mode: single

The following YAML is what I use to turn off the Bento fan, after the print is done or if the bed to cool bellow 50 (maybe the print was canceled) I have a condition that checks if the Bento fan is on which is powered by a controllable USB power source, I don’t recall if it’s Wifi or Zigbee. It then waits for 5 minutes to clear the fumes and turns off the USB power to the Bento fan.
alias: Bambu Turn off Bento Fan
description: “”
trigger:

  • platform: state
    entity_id:
    • sensor.x1c_00m09a351801070_print_progress
      to: “100”
  • platform: numeric_state
    entity_id:
    • sensor.x1c_00m09a351801070_bed_temperature
      below: 50
      condition:
  • condition: device
    type: is_on
    device_id: d38912488d4faa800b55e7f9013e0f32
    entity_id: bbba30ccad15a593be43b1f392f06c01
    domain: switch
    action:
  • delay:
    hours: 0
    minutes: 5
    seconds: 0
    milliseconds: 0
  • type: turn_off
    device_id: d38912488d4faa800b55e7f9013e0f32
    entity_id: bbba30ccad15a593be43b1f392f06c01
    domain: switch
    mode: single
2 Likes

Big thanks for your help by sharing your work, I will adapt that for my own case asap.