Add Elegoo printers to ESPHome fleet display
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
# Bambu fleet display
|
||||
# Bambu and Elegoo fleet display
|
||||
|
||||
ESPHome/LVGL monitor for the **Sunton ESP32-8048S043C**, with an 800×480 landscape RGB
|
||||
display, GT911 capacitive touch, 16 MB flash and 8 MB octal PSRAM. The hardware pins
|
||||
@@ -6,10 +6,10 @@ and LCD timings follow the [ESPHome device reference](https://devices.esphome.io
|
||||
This configuration is for the **C** capacitive-touch version.
|
||||
|
||||
Inspired by [BambuHelper](https://github.com/Keralots/BambuHelper), this implementation
|
||||
subscribes to the existing Home Assistant Bambu Lab entities over a single encrypted
|
||||
ESPHome API connection. Home Assistant handles the printer connections. No Bambu
|
||||
subscribes to the existing Home Assistant Bambu Lab and Elegoo Printer entities over
|
||||
a single encrypted ESPHome API connection. Home Assistant handles the printer connections. No Bambu
|
||||
access codes, cloud credentials or additional Home Assistant automations are needed.
|
||||
Home Assistant must be running and its Bambu integration must have current printer data.
|
||||
Home Assistant must be running and its printer integrations must have current printer data.
|
||||
|
||||
## Pages and navigation
|
||||
|
||||
@@ -24,13 +24,19 @@ The configured swipe order is:
|
||||
5. Constipation-Orion — Office, left/right nozzles and both four-slot AMS units.
|
||||
AMS A uses `constipation_orion_ams_1`; AMS B retains its original
|
||||
`h2c_31b8ap5a2200288_ams_2` entity prefix.
|
||||
6. Centauri Carbon — Elegoo FDM, Office, nozzle/bed current and target temperatures
|
||||
and model/auxiliary/enclosure fan speeds.
|
||||
7. Saturn — Elegoo resin, Garage, progress, UV LED temperature, current/total layers,
|
||||
elapsed time, remaining time and estimated finish.
|
||||
|
||||

|
||||
|
||||
Swipe left for the next printer or right for the previous printer. Navigation wraps
|
||||
from the last page to the first. Previous/Next buttons provide the same navigation.
|
||||
Swipes propagate through the arc gauges and filament slots. A swipe consumes the
|
||||
rest of that touch so dragging across a navigation button does not also click it.
|
||||
|
||||
Each page shows print status, job name, progress, nozzle and bed current/target
|
||||
FDM pages show print status, job name, progress, nozzle and bed current/target
|
||||
temperatures, remaining time, estimated finish time, current/total layers, print
|
||||
stage, fan speeds and filament colors/types. The layout follows BambuHelper's
|
||||
classic gauges: black background, bright green accents, six arc gauges and a
|
||||
@@ -47,6 +53,12 @@ three current HMS notices, plus print-error details. Scroll vertically for long
|
||||
messages and tap Close to return. If more than three notices exist, the panel says
|
||||
how many additional notices are available in Home Assistant.
|
||||
|
||||
Elegoo pages use the same status-tap details panel for `print_error` and
|
||||
`error_status_reason` enum values. `none` and `ok` are normal states; unknown or
|
||||
unavailable errors do not imply a fault. Elegoo pages use `sdcp_status` for printer
|
||||
connectivity and do not subscribe to Bambu HMS or AMS entities. The Saturn page
|
||||
omits nozzle, bed, fan and filament widgets.
|
||||
|
||||
The status uses **HEALTH INFO** (cyan) for information-only notifications,
|
||||
**HEALTH NOTICE** (amber) for common/unknown severities or incomplete details, and
|
||||
**HEALTH ERROR** (red) for fatal/serious severities. Severity comes from the Bambu
|
||||
@@ -58,7 +70,7 @@ fields for subsequent notices. Stale attributes are ignored when the sensor is o
|
||||
|
||||
When Home Assistant disconnects or a printer is offline, its live metrics are cleared
|
||||
to `--` rather than continuing to show cached values as live. Unknown individual
|
||||
values also show `--`. Remaining time respects the HA sensor's `h`, `min` or `s`
|
||||
values also show `--`. Remaining time respects the HA sensor's `h`, `min`, `s` or `ms`
|
||||
unit, and temperature labels use the imported HA temperature unit. Only the visible
|
||||
page is refreshed each second; every printer's subscriptions remain connected.
|
||||
Auxiliary and exhaust fans are imported only for printers with those sensors;
|
||||
@@ -125,8 +137,8 @@ The generator requires PyYAML (already included in ESPHome's Python environment)
|
||||
Do not hand-edit `generated.yaml`. There is no two-printer limit in the generator;
|
||||
adding a printer creates its own subscriptions, widgets and swipe page. The practical
|
||||
limit depends on the board's available RAM and flash, and adding printers requires
|
||||
regenerating and installing the firmware. Five printers are configured; generation
|
||||
is also tested with seven. Each printer's filament strip supports up to eight slots.
|
||||
regenerating and installing the firmware. Seven printers are configured; generation
|
||||
is also tested with nine. Each Bambu printer's filament strip supports up to eight slots.
|
||||
|
||||
```yaml
|
||||
- id: another_printer
|
||||
@@ -148,6 +160,29 @@ For a dual-nozzle printer add `dual_nozzle: true`. For external filament add
|
||||
exist; their mappings are in `EXTRA_FANS`. A remaining-time override also updates its unit subscription.
|
||||
Filament entries use the Bambu integration's `type`, `color` and `active` attributes.
|
||||
|
||||
For Elegoo printers, set `profile: elegoo_fdm` or `profile: elegoo_resin` (the default
|
||||
profile is `bambu`). These profiles map progress to `percent_complete`, job name to
|
||||
`file_name`, remaining time to `remaining_print_time`, and total layers to
|
||||
`total_layers`. The FDM profile reads targets from the HA `number` entities
|
||||
`target_nozzle_temp` and `target_bed_temp`; it only monitors their state. Per-metric
|
||||
`entities` overrides support `sensor`, `binary_sensor` and `number` domains.
|
||||
Sensor types, duration units and enum states follow the
|
||||
[Elegoo integration definitions](https://github.com/danielcherubini/elegoo-homeassistant/blob/main/custom_components/elegoo_printer/definitions.py).
|
||||
|
||||
The configured Elegoo prefixes are `centauri_carbon` and `saturn`, matching the
|
||||
repository entity snapshot. Some older automations refer to `saturn_iv`; if your
|
||||
live integration still uses that prefix, change the Saturn `entity_prefix` before
|
||||
regenerating. If individual entities have different names in your integration
|
||||
version, use `entities` overrides, for example:
|
||||
|
||||
```yaml
|
||||
entities:
|
||||
print_error_reason: sensor.saturn_current_print_error_status_reason
|
||||
```
|
||||
|
||||
No new HA helpers are required. `dual_nozzle`, filament slots and `extra_fans` are
|
||||
Bambu options; the Elegoo FDM profile includes its three fan subscriptions.
|
||||
|
||||
## Development checks and screenshots
|
||||
|
||||
```sh
|
||||
@@ -158,10 +193,11 @@ python esphome/bambu-display/preview.py
|
||||
```
|
||||
|
||||
`preview.py` compiles the same generated LVGL widgets for ESPHome's SDL host with
|
||||
clearly synthetic telemetry, then captures all five pages and a synthetic health
|
||||
clearly synthetic telemetry, then captures all seven pages and a synthetic health
|
||||
notice into `previews/`. The demo notice is not a diagnosis of any real printer. It needs
|
||||
ESPHome, Pillow, a C++ compiler and SDL2 (`sdl2-config` on PATH). It runs headlessly,
|
||||
without connecting to Home Assistant or any printer. It also injects LVGL pointer
|
||||
samples to check left/right swipes, page wraparound and consumption of a swipe that
|
||||
starts on a navigation button. These are software layout
|
||||
previews; physical panel timings, touch and Wi-Fi still need a hardware check.
|
||||
The preview also checks Elegoo telemetry, error text and clearing of offline data.
|
||||
|
||||
Reference in New Issue
Block a user