1
0
Fork 0
mirror of https://github.com/maziggy/bambuddy.git synced 2026-05-09 08:25:54 +02:00

[GH-ISSUE #320] [Feature]: Add Home Assistant Switch Integration for External LED Strip Control (P1S) #203

Closed
opened 2026-05-07 00:07:40 +02:00 by BreizhHardware · 8 comments

Originally created by @Moskito99 on GitHub (Feb 10, 2026).
Original GitHub issue: https://github.com/maziggy/bambuddy/issues/320

Originally assigned to: @bambuman on GitHub.

Problem or Use Case

Add support for controlling an external LED strip in the Bambu Lab P1S via Home Assistant using Bambuddy. This would allow users to sync the LED state with Home Assistant automations, scenes, or voice assistants (e.g., Alexa/Google Assistant).

The built-in LED of the P1S is often insufficient for long prints, monitoring, or video recording.
Many users (including myself) have added external LED strips to improve visibility.

A Home Assistant integration would enable seamless automation (e.g., turning LEDs on/off with print start/stop events or time-based schedules).

Proposed Solution

Home Assistant Discovery:
Automatically expose the LED as a Home Assistant light or switch entity when Bambuddy is running.

Sync with Printer Light:
Optionally, add a setting to mirror the internal chamber light (e.g., if the printer’s LED is on, the external LED turns on automatically).

Alternatives Considered

No response

Feature Category

Smart Plugs

Priority

Nice to have

Mockups or Examples

No response

Contribution

  • I would be willing to help implement this feature

Checklist

  • I have searched existing issues to ensure this feature hasn't already been requested
Originally created by @Moskito99 on GitHub (Feb 10, 2026). Original GitHub issue: https://github.com/maziggy/bambuddy/issues/320 Originally assigned to: @bambuman on GitHub. ### Problem or Use Case Add support for controlling an external LED strip in the Bambu Lab P1S via Home Assistant using Bambuddy. This would allow users to sync the LED state with Home Assistant automations, scenes, or voice assistants (e.g., Alexa/Google Assistant). The built-in LED of the P1S is often insufficient for long prints, monitoring, or video recording. Many users (including myself) have added external LED strips to improve visibility. A Home Assistant integration would enable seamless automation (e.g., turning LEDs on/off with print start/stop events or time-based schedules). ### Proposed Solution **Home Assistant Discovery:** Automatically expose the LED as a Home Assistant **light** or **switch** entity when Bambuddy is running. **Sync with Printer Light:** Optionally, add a setting to mirror the internal chamber light (e.g., if the printer’s LED is on, the external LED turns on automatically). ### Alternatives Considered _No response_ ### Feature Category Smart Plugs ### Priority Nice to have ### Mockups or Examples _No response_ ### Contribution - [ ] I would be willing to help implement this feature ### Checklist - [x] I have searched existing issues to ensure this feature hasn't already been requested
Author
Owner

@bambuman commented on GitHub (Feb 10, 2026):

@maziggy I would be interested in working on this. As I also have LED risers on my P1Ss. And they are controlled by ESPHome in HA.

I will have time this weekend to work on it.

I was thinking how to solve this, looking at the "Smart Plugs" sections. You can already add a led strip.
But it acts more like a smart socket, when turning on/off, it displays a confirmation. And when I turn off the printer card acts as if the printer is offline for a second.

Should I add types to the "Smart Plugs", or read it from HA.

And if it's a light it would not show the confirmation?

Also an option to "replace chamber light" or "sync with chamber light"

Image Image Image Image Image Image
<!-- gh-comment-id:3877118310 --> @bambuman commented on GitHub (Feb 10, 2026): @maziggy I would be interested in working on this. As I also have LED risers on my P1Ss. And they are controlled by ESPHome in HA. I will have time this weekend to work on it. I was thinking how to solve this, looking at the "Smart Plugs" sections. You can already add a led strip. But it acts more like a smart socket, when turning on/off, it displays a confirmation. And when I turn off the printer card acts as if the printer is offline for a second. Should I add types to the "Smart Plugs", or read it from HA. And if it's a light it would not show the confirmation? Also an option to "replace chamber light" or "sync with chamber light" <img width="466" height="711" alt="Image" src="https://github.com/user-attachments/assets/55be4d96-9b9f-43d8-9050-d4c504d5deba" /> <img width="466" height="206" alt="Image" src="https://github.com/user-attachments/assets/c3802768-9784-4276-9c0d-facdd485d89c" /> <img width="457" height="199" alt="Image" src="https://github.com/user-attachments/assets/d61e4e53-df2c-47cf-97a2-a08d1f211946" /> <img width="471" height="327" alt="Image" src="https://github.com/user-attachments/assets/60637e40-3e7b-4221-9c89-897aad5b0867" /> <img width="457" height="1079" alt="Image" src="https://github.com/user-attachments/assets/f801f776-551e-47c5-91cd-90b1cc390fc5" /> <img width="315" height="526" alt="Image" src="https://github.com/user-attachments/assets/c7fdb5ef-8691-475b-b4a9-f9bde54d4d2d" />
Author
Owner

@maziggy commented on GitHub (Feb 10, 2026):

Yes, sure. Thanks!

<!-- gh-comment-id:3877142200 --> @maziggy commented on GitHub (Feb 10, 2026): Yes, sure. Thanks!
Author
Owner

@bambuman commented on GitHub (Feb 23, 2026):

@maziggy sorry, I haven't had time to work on this yet. If a 1-2 week delay is okay, keep me as the assignee; otherwise, please feel free to remove me.

<!-- gh-comment-id:3947900404 --> @bambuman commented on GitHub (Feb 23, 2026): @maziggy sorry, I haven't had time to work on this yet. If a 1-2 week delay is okay, keep me as the assignee; otherwise, please feel free to remove me.
Author
Owner

@maziggy commented on GitHub (Feb 24, 2026):

All good.

<!-- gh-comment-id:3949894514 --> @maziggy commented on GitHub (Feb 24, 2026): All good.
Author
Owner

@Dendrowen commented on GitHub (Feb 26, 2026):

For a temporary solution you can create an automation in Home Assistant 'linking' the two lights. When the original light turns on, so does the external light. You would need the bambulab integration.

I have this Node-RED flow that also looks at room occupancy and printer state.

[
  {
    "id": "c026423880c43f3f",
    "type": "group",
    "z": "ca3cfebbddf2a094",
    "style": {
      "stroke": "#2b2b2b",
      "stroke-opacity": "1",
      "fill": "#181818",
      "fill-opacity": "0.5",
      "label": true,
      "label-position": "nw",
      "color": "#cccccc"
    },
    "nodes": [
      "fe95e0056756d3b8",
      "ec925e6eaaa5ee1f",
      "9c83dfbc5d2cb4ab"
    ],
    "x": 14,
    "y": 279,
    "w": 472,
    "h": 122
  },
  {
    "id": "fe95e0056756d3b8",
    "type": "trigger-state",
    "z": "ca3cfebbddf2a094",
    "g": "c026423880c43f3f",
    "name": "idle and no one",
    "server": "9b6e98d1.0fb718",
    "version": 5,
    "inputs": 0,
    "outputs": 2,
    "exposeAsEntityConfig": "",
    "entities": {
      "entity": [
        "light.hobby",
        "sensor.p1s_01p00c541701339_huidige_fase",
        "light.p1s_01p00c541701339_kamerlicht"
      ],
      "substring": [],
      "regex": []
    },
    "debugEnabled": false,
    "constraints": [
      {
        "targetType": "entity_id",
        "targetValue": "sensor.p1s_01p00c541701339_huidige_fase",
        "propertyType": "current_state",
        "propertyValue": "new_state.state",
        "comparatorType": "is",
        "comparatorValueDatatype": "str",
        "comparatorValue": "idle"
      },
      {
        "targetType": "entity_id",
        "targetValue": "light.hobby",
        "propertyType": "current_state",
        "propertyValue": "new_state.state",
        "comparatorType": "is",
        "comparatorValueDatatype": "str",
        "comparatorValue": "off"
      },
      {
        "targetType": "entity_id",
        "targetValue": "light.p1s_01p00c541701339_kamerlicht",
        "propertyType": "current_state",
        "propertyValue": "new_state.state",
        "comparatorType": "is",
        "comparatorValueDatatype": "str",
        "comparatorValue": "off"
      }
    ],
    "customOutputs": [],
    "outputInitially": false,
    "stateType": "str",
    "enableInput": false,
    "x": 120,
    "y": 360,
    "wires": [
      [
        "ec925e6eaaa5ee1f"
      ],
      [
        "9c83dfbc5d2cb4ab"
      ]
    ]
  },
  {
    "id": "ec925e6eaaa5ee1f",
    "type": "api-call-service",
    "z": "ca3cfebbddf2a094",
    "g": "c026423880c43f3f",
    "name": "No lights",
    "server": "9b6e98d1.0fb718",
    "version": 7,
    "debugenabled": false,
    "action": "light.turn_off",
    "floorId": [],
    "areaId": [],
    "deviceId": [],
    "entityId": [
      "light.p1s_001_extras_p1s_001_extras_chamber_lights"
    ],
    "labelId": [],
    "data": "",
    "dataType": "jsonata",
    "mergeContext": "",
    "mustacheAltTags": false,
    "outputProperties": [],
    "queue": "none",
    "blockInputOverrides": true,
    "domain": "light",
    "service": "turn_off",
    "x": 380,
    "y": 320,
    "wires": [
      []
    ]
  },
  {
    "id": "9c83dfbc5d2cb4ab",
    "type": "api-call-service",
    "z": "ca3cfebbddf2a094",
    "g": "c026423880c43f3f",
    "name": "White lights",
    "server": "9b6e98d1.0fb718",
    "version": 7,
    "debugenabled": false,
    "action": "light.turn_on",
    "floorId": [],
    "areaId": [],
    "deviceId": [],
    "entityId": [
      "light.p1s_001_extras_p1s_001_extras_chamber_lights"
    ],
    "labelId": [],
    "data": "{\t   \"rgb_color\":[255, 228, 206],\t   \"brightness\":255\t}",
    "dataType": "jsonata",
    "mergeContext": "",
    "mustacheAltTags": false,
    "outputProperties": [],
    "queue": "none",
    "blockInputOverrides": true,
    "domain": "light",
    "service": "turn_on",
    "x": 390,
    "y": 360,
    "wires": [
      []
    ]
  },
  {
    "id": "9b6e98d1.0fb718",
    "type": "server",
    "name": "Home Assistant",
    "version": 6,
    "addon": true,
    "rejectUnauthorizedCerts": true,
    "ha_boolean": [
      "y",
      "yes",
      "true",
      "on",
      "home",
      "open"
    ],
    "connectionDelay": true,
    "cacheJson": true,
    "heartbeat": false,
    "heartbeatInterval": "30",
    "areaSelector": "friendlyName",
    "deviceSelector": "friendlyName",
    "entitySelector": "friendlyName",
    "statusSeparator": "at: ",
    "statusYear": "hidden",
    "statusMonth": "short",
    "statusDay": "numeric",
    "statusHourCycle": "h23",
    "statusTimeFormat": "h:m",
    "enableGlobalContextStore": true
  },
  {
    "id": "54805a6bc78a2a50",
    "type": "global-config",
    "env": [],
    "modules": {
      "node-red-contrib-home-assistant-websocket": "0.80.3"
    }
  }
]
<!-- gh-comment-id:3964999550 --> @Dendrowen commented on GitHub (Feb 26, 2026): For a temporary solution you can create an automation in Home Assistant 'linking' the two lights. When the original light turns on, so does the external light. You would need the bambulab integration. I have this Node-RED flow that also looks at room occupancy and printer state. ```json [ { "id": "c026423880c43f3f", "type": "group", "z": "ca3cfebbddf2a094", "style": { "stroke": "#2b2b2b", "stroke-opacity": "1", "fill": "#181818", "fill-opacity": "0.5", "label": true, "label-position": "nw", "color": "#cccccc" }, "nodes": [ "fe95e0056756d3b8", "ec925e6eaaa5ee1f", "9c83dfbc5d2cb4ab" ], "x": 14, "y": 279, "w": 472, "h": 122 }, { "id": "fe95e0056756d3b8", "type": "trigger-state", "z": "ca3cfebbddf2a094", "g": "c026423880c43f3f", "name": "idle and no one", "server": "9b6e98d1.0fb718", "version": 5, "inputs": 0, "outputs": 2, "exposeAsEntityConfig": "", "entities": { "entity": [ "light.hobby", "sensor.p1s_01p00c541701339_huidige_fase", "light.p1s_01p00c541701339_kamerlicht" ], "substring": [], "regex": [] }, "debugEnabled": false, "constraints": [ { "targetType": "entity_id", "targetValue": "sensor.p1s_01p00c541701339_huidige_fase", "propertyType": "current_state", "propertyValue": "new_state.state", "comparatorType": "is", "comparatorValueDatatype": "str", "comparatorValue": "idle" }, { "targetType": "entity_id", "targetValue": "light.hobby", "propertyType": "current_state", "propertyValue": "new_state.state", "comparatorType": "is", "comparatorValueDatatype": "str", "comparatorValue": "off" }, { "targetType": "entity_id", "targetValue": "light.p1s_01p00c541701339_kamerlicht", "propertyType": "current_state", "propertyValue": "new_state.state", "comparatorType": "is", "comparatorValueDatatype": "str", "comparatorValue": "off" } ], "customOutputs": [], "outputInitially": false, "stateType": "str", "enableInput": false, "x": 120, "y": 360, "wires": [ [ "ec925e6eaaa5ee1f" ], [ "9c83dfbc5d2cb4ab" ] ] }, { "id": "ec925e6eaaa5ee1f", "type": "api-call-service", "z": "ca3cfebbddf2a094", "g": "c026423880c43f3f", "name": "No lights", "server": "9b6e98d1.0fb718", "version": 7, "debugenabled": false, "action": "light.turn_off", "floorId": [], "areaId": [], "deviceId": [], "entityId": [ "light.p1s_001_extras_p1s_001_extras_chamber_lights" ], "labelId": [], "data": "", "dataType": "jsonata", "mergeContext": "", "mustacheAltTags": false, "outputProperties": [], "queue": "none", "blockInputOverrides": true, "domain": "light", "service": "turn_off", "x": 380, "y": 320, "wires": [ [] ] }, { "id": "9c83dfbc5d2cb4ab", "type": "api-call-service", "z": "ca3cfebbddf2a094", "g": "c026423880c43f3f", "name": "White lights", "server": "9b6e98d1.0fb718", "version": 7, "debugenabled": false, "action": "light.turn_on", "floorId": [], "areaId": [], "deviceId": [], "entityId": [ "light.p1s_001_extras_p1s_001_extras_chamber_lights" ], "labelId": [], "data": "{\t \"rgb_color\":[255, 228, 206],\t \"brightness\":255\t}", "dataType": "jsonata", "mergeContext": "", "mustacheAltTags": false, "outputProperties": [], "queue": "none", "blockInputOverrides": true, "domain": "light", "service": "turn_on", "x": 390, "y": 360, "wires": [ [] ] }, { "id": "9b6e98d1.0fb718", "type": "server", "name": "Home Assistant", "version": 6, "addon": true, "rejectUnauthorizedCerts": true, "ha_boolean": [ "y", "yes", "true", "on", "home", "open" ], "connectionDelay": true, "cacheJson": true, "heartbeat": false, "heartbeatInterval": "30", "areaSelector": "friendlyName", "deviceSelector": "friendlyName", "entitySelector": "friendlyName", "statusSeparator": "at: ", "statusYear": "hidden", "statusMonth": "short", "statusDay": "numeric", "statusHourCycle": "h23", "statusTimeFormat": "h:m", "enableGlobalContextStore": true }, { "id": "54805a6bc78a2a50", "type": "global-config", "env": [], "modules": { "node-red-contrib-home-assistant-websocket": "0.80.3" } } ] ```
Author
Owner

@ddetton commented on GitHub (Mar 17, 2026):

I can help test this. I have an HA smart plug controlled LED strip on my A1 that I just installed today.

<!-- gh-comment-id:4072761530 --> @ddetton commented on GitHub (Mar 17, 2026): I can help test this. I have an HA smart plug controlled LED strip on my A1 that I just installed today.
Author
Owner

@maziggy commented on GitHub (Apr 18, 2026):

@bambuman Any news?

<!-- gh-comment-id:4273141071 --> @maziggy commented on GitHub (Apr 18, 2026): @bambuman Any news?
Author
Owner

@ddetton commented on GitHub (Apr 18, 2026):

HI just use the BL integration with an automation in HA to turn on the external LED strip whenever the printer's internal light goes on. I can't think of a situation where I would want the external light on and the internal light off or vice versa.

<!-- gh-comment-id:4273825940 --> @ddetton commented on GitHub (Apr 18, 2026): HI just use the BL integration with an automation in HA to turn on the external LED strip whenever the printer's internal light goes on. I can't think of a situation where I would want the external light on and the internal light off or vice versa.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
starred/bambuddy-maziggy-1#203
No description provided.