X1Plus - NodeRed to HomeAssistant Integration

Bambu Lab Guides Published Jun 16, 2024
Updated Jun 17, 2024
This is an early, experimental flow. I am working alongside the X1Plus team to improve on functionality and features. The best way to get new features is to leave feedback and suggestions.

This requires version 2.0_rc0 or higher of X1Plus


  • My Basic Flow fully setup (v2.1.5+)
  • X1Plus (which means only for X1/X1C printers)
  • Highly Recommended: Set a static IP for your printer
Custom firmware for Bambu Lab X1 and X1 Carbon 3D printers - X1Plus/X1Plus

NodeRed Setup

You will need to install the following palettes in NodeRed before continuing. I am working on improving this and may be subject to change in future versions.

If redownloading this flow to replace a previous one, please update your palettes in the palette menu to be equal to or newer version of the above.

NodeRed Required Palettes

  • @arcsoft/node-red-sshtools >= 0.0.12

Once the palette is installed, you can import the flow after configuring down below. Import this into the same flow/tab as the Basic Flow.

Currently, configuration must be done in the flow and not here due to limitations of the SSH palette used. I am working to improve this. Unfortunately, I cannot pass in the IP information from the basic flow for the same reason.

Import this into your NodeRed Flow and before you deploy, you will need to configure the SSH node.

Find the SSH node in the imported flow and double click it to open its settings. Notice that the SSH Config is not set, as you need to create a new one.

Create a new ssh-conncfg. You can set any name to it (I recommend naming it after the printer name with X1P in the name). Then fill in the host information, and SSH user/password.

One configured, press Done and Deploy the flow.

The functionality is currently limited - it will allow you to toggle on/off OTA and VNC, as well as check for and remotely OTA install an official firmware update. It will also create sensors for finding out the current X1Plus version, and the OEM version it's based off of.

Currently this flow will run anytime X1Plus is detected as active from the Basic Flow, and will only work if this is the case.

It will periodically check for OTA updates and current versions (~6 hour interval). It will also only check for settings updates (OTA/VNC status) every 5 minutes, which means if you change these settings on the printer, it will not be reflected immediately unless done via this integration.

I am working with the X1Plus team to implement MQTT commands for these services such that I can remove the requirement to SSH. In addition, the hope is that any settings change will also be published to this new MQTT implementation. But for now, this flow will use SSH for the basic implementation to get feedback and test.

FAQ and Common Issues

1) I get a warning that X1Plus is not installed, but it is?

If you had installed X1Plus while already having the Basic Flow active in NodeRed, verify that you have the following value set to true in the Basic Flow (x1plus_installed).

Keep x1plus_active set to false, this will change when it is detected by my flow.

Otherwise, verify your NodeRed flow is the latest version.

That's it! X1Plus' data is now partially integrated alongside your printer into HomeAssistant, giving you a few good sensors and control over X1Plus related features.

If you have any questions or issues, feel free to leave a comment, contact me over discord (@wolfwithsword) or create an issue/discussion on the github repo for this project.

GitHub - WolfwithSword/Bambu-HomeAssistant-Flows: A collection of HomeAssistant Dashboards and NodeRed Flows with a configurator to connect a BambuLabs printer to HomeAssistant through MQTT - based off of my Gists
A collection of HomeAssistant Dashboards and NodeRed Flows with a configurator to connect a BambuLabs printer to HomeAssistant through MQTT - based off of my Gists - GitHub - WolfwithSword/Bambu-Ho…



A maker & hobbyist. Everything creative from the digital to the physical. I strive to make the world around me, rather than let it make me.