Releases: GhostTypes/ff-5mp-hass
v1.2.0
What's New in 1.2.0
Full HA experience for FlashForge Adventurer 5M / 5M Pro / AD5X printers (HTTP API only). 45 entities across sensors, binary sensors, switches, buttons, a select, camera, and images.
Added
- AD5X IFS material station entities (AD5X only):
- 4
imageentities, one per slot, that render a labeled color swatch (filament hex color background + material name overlay, e.g. "PLA"). Empty slots render as a neutral "EMPTY" tile. Swatches are PNG-encoded with Pillow on a background executor and cached so re-renders only happen when the slot's material or color changes. Material name, color, andhas_filamentare also surfaced viaextra_state_attributesfor templating. - Active IFS Slot sensor — integer 1–4 of the slot currently being printed from, 0 when idle.
- 4
- Print Completion Time sensor (
device_class=TIMESTAMP) — the absolute wall-clock time at which the active print is expected to finish, rounded to the nearest minute. Only populated while a print is active (printing / heating / pausing / paused); idle otherwise. - Cooling Fan Speed sensor (universal,
%) — the part-cooling fan duty cycle. - Chamber Fan Speed sensor (Adventurer 5M Pro only,
%). - TVOC sensor (Adventurer 5M Pro only,
device_class=VOLATILE_ORGANIC_COMPOUNDS, µg/m³) — air-quality reading from the Pro's onboard sensor. - Diagnostic sensors:
firmware_version,free_disk_space,ip_address, anderror_code(the last disabled by default; pairs with the existingErrorbinary sensor for actionable detail). - Diagnostics download support (
diagnostics.py) — downloadable from the device page, withcheck_code,serial_number, MAC/IP, and cloud registration codes redacted. - Reauthentication flow — when the printer rejects the check code, HA can prompt for a new one without removing and re-adding the integration.
- Reconfigure flow — IP and check code can be updated in place (e.g. after a DHCP shift).
- Hardware-only sensors and entities are gated at setup time: AD5X-only entities (the 4 IFS slot images and Active IFS Slot sensor) are only created on AD5X printers; Adventurer 5M Pro-only sensors (TVOC, Chamber Fan Speed) are only created on 5M Pro printers.
Changed
- Full entity translations across every platform (Gold quality scale). Every entity now declares a
translation_keyand resolves its display name (and, where applicable, state values) throughstrings.json/translations/en.jsoninstead of carrying a hardcodedname. Covers all sensors, binary sensors, the LED switch, all buttons, the filtration select (with translated state labels: Off / Internal / External), the camera, and the image entities. Machine-status sensor states are translated as well (Ready / Busy / Calibrating / Error / Heating / Printing / Pausing / Paused / Cancelled / Completed / Unknown). - Sensor type audit — corrected device classes, units, and value formats so HA renders, graphs, and templates correctly:
machine_statusis nowdevice_class=ENUMwith explicitoptions(the 11MachineStatevalues), enabling proper UI rendering and history graphs.elapsed_timeandremaining_timenow expose numeric durations in seconds withdevice_class=DURATION, so templates / automations can do real arithmetic instead of parsing colon strings (e.g.notify when remaining < 600). Breaking: any user template that depended on the old"HH:MM"string format for these will need updating.lifetime_runtimeremains a human-readable string ("818h:11m") since HA's default sensor card doesn't auto-format DURATION values into a friendly form and a many-digit number of minutes/seconds reads worse than the formatted string.filament_weightgaineddevice_class=WEIGHT+UnitOfMass.GRAMS.filament_lengthandlifetime_filamentgaineddevice_class=DISTANCE+UnitOfLength.METERS.z_offsetnow usesUnitOfLength.MILLIMETERS(was a literal"mm"string).free_disk_spaceis now a numericdevice_class=DATA_SIZEsensor inUnitOfInformation.GIGABYTES(was a pre-formatted string with no unit), matching the printer's reported unit.- Nozzle and bed temperature sensors now declare
device_class=temperaturefor proper HA UI rendering. print_speednow uses thePERCENTAGEconstant rather than a literal"%".
- Device
modelis now derived from the firmware-setpid(35 = Adventurer 5M, 36 = 5M Pro, 38 = AD5X) and resolved dynamically on every read, so it no longer permanently reads "Unknown" if the first refresh fails. Camera and image entities now report the model, which they were previously missing. - Refactored
device_infoconstruction into a shared helper, eliminating duplication across all entity platforms. - Bumped
flashforge-python-apirequirement to>=1.2.3. The library now derivesis_pro/is_ad5xonFFMachineInfofrom the firmware-setpidfield instead of string-matching the user-mutable printer name, mirroring the v1.1.9 config-flow fix at the API layer (ff-5mp-api-py CHANGELOG). Refs #13.
Breaking: elapsed_time / remaining_time now expose numeric seconds (device_class=DURATION) instead of "HH:MM" strings — update any templates that parsed the old format.
Requires flashforge-python-api>=1.2.3 (auto-installed via HACS). Tested on HA Core 2026.4.2.
v1.2.0
Added
- AD5X IFS material station entities (AD5X only):
- 4
imageentities, one per slot, that render a labeled color swatch (filament hex color background + material name overlay, e.g. "PLA"). Empty slots render as a neutral "EMPTY" tile. Swatches are PNG-encoded with Pillow on a background executor and cached so re-renders only happen when the slot's material or color changes. Material name, color, andhas_filamentare also surfaced viaextra_state_attributesfor templating. - Active IFS Slot sensor — integer 1–4 of the slot currently being printed from, 0 when idle.
- 4
- Print Completion Time sensor (
device_class=TIMESTAMP) — the absolute wall-clock time at which the active print is expected to finish, rounded to the nearest minute. Only populated while a print is active (printing / heating / pausing / paused); idle otherwise. - Cooling Fan Speed sensor (universal,
%) — the part-cooling fan duty cycle. - Chamber Fan Speed sensor (Adventurer 5M Pro only,
%). - TVOC sensor (Adventurer 5M Pro only,
device_class=VOLATILE_ORGANIC_COMPOUNDS, µg/m³) — air-quality reading from the Pro's onboard sensor. - Diagnostic sensors:
firmware_version,free_disk_space,ip_address, anderror_code(the last disabled by default; pairs with the existingErrorbinary sensor for actionable detail). - Diagnostics download support (
diagnostics.py) — downloadable from the device page, withcheck_code,serial_number, MAC/IP, and cloud registration codes redacted. - Reauthentication flow — when the printer rejects the check code, HA can prompt for a new one without removing and re-adding the integration.
- Reconfigure flow — IP and check code can be updated in place (e.g. after a DHCP shift).
- Hardware-only sensors and entities are gated at setup time: AD5X-only entities (the 4 IFS slot images and Active IFS Slot sensor) are only created on AD5X printers; Adventurer 5M Pro-only sensors (TVOC, Chamber Fan Speed) are only created on 5M Pro printers.
Changed
- Full entity translations across every platform (Gold quality scale). Every entity now declares a
translation_keyand resolves its display name (and, where applicable, state values) throughstrings.json/translations/en.jsoninstead of carrying a hardcodedname. Covers all sensors, binary sensors, the LED switch, all buttons, the filtration select (with translated state labels: Off / Internal / External), the camera, and the image entities. Machine-status sensor states are translated as well (Ready / Busy / Calibrating / Error / Heating / Printing / Pausing / Paused / Cancelled / Completed / Unknown). - Sensor type audit — corrected device classes, units, and value formats so HA renders, graphs, and templates correctly:
machine_statusis nowdevice_class=ENUMwith explicitoptions(the 11MachineStatevalues), enabling proper UI rendering and history graphs.elapsed_timeandremaining_timenow expose numeric durations in seconds withdevice_class=DURATION, so templates / automations can do real arithmetic instead of parsing colon strings (e.g.notify when remaining < 600). Breaking: any user template that depended on the old"HH:MM"string format for these will need updating.lifetime_runtimeremains a human-readable string ("818h:11m") since HA's default sensor card doesn't auto-format DURATION values into a friendly form and a many-digit number of minutes/seconds reads worse than the formatted string.filament_weightgaineddevice_class=WEIGHT+UnitOfMass.GRAMS.filament_lengthandlifetime_filamentgaineddevice_class=DISTANCE+UnitOfLength.METERS.z_offsetnow usesUnitOfLength.MILLIMETERS(was a literal"mm"string).free_disk_spaceis now a numericdevice_class=DATA_SIZEsensor inUnitOfInformation.GIGABYTES(was a pre-formatted string with no unit), matching the printer's reported unit.- Nozzle and bed temperature sensors now declare
device_class=temperaturefor proper HA UI rendering. print_speednow uses thePERCENTAGEconstant rather than a literal"%".
- Device
modelis now derived from the firmware-setpid(35 = Adventurer 5M, 36 = 5M Pro, 38 = AD5X) and resolved dynamically on every read, so it no longer permanently reads "Unknown" if the first refresh fails. Camera and image entities now report the model, which they were previously missing. - Refactored
device_infoconstruction into a shared helper, eliminating duplication across all entity platforms. - Bumped
flashforge-python-apirequirement to>=1.2.3. The library now derivesis_pro/is_ad5xonFFMachineInfofrom the firmware-setpidfield instead of string-matching the user-mutable printer name, mirroring the v1.1.9 config-flow fix at the API layer (ff-5mp-api-py CHANGELOG). Refs #13.
Installation
Via HACS (Recommended)
- Open HACS -> Integrations
- Click the menu -> Custom repositories
- Add:
https://github.com/GhostTypes/ff-5mp-hass - Category: Integration
- Search "FlashForge" and install
Manual Installation
- Download
Source code (zip)below - Extract
custom_components/flashforge/folder - Copy to your Home Assistant
config/custom_components/directory - Restart Home Assistant
README: https://github.com/GhostTypes/ff-5mp-hass/blob/v1.2.0/README.md
Changelog: https://github.com/GhostTypes/ff-5mp-hass/blob/v1.2.0/CHANGELOG.md
Full Changelog: v1.1.9...v1.2.0
v1.1.9
Fixed
- Renamed printers were rejected during initial pairing as unsupported because model detection matched against the user-mutable
namefield. Detection now uses the firmware-setpidvalue from/detail(35 = Adventurer 5M, 36 = 5M Pro, 38 = AD5X). Refs #13.
Installation
Via HACS (Recommended)
- Open HACS -> Integrations
- Click the menu -> Custom repositories
- Add:
https://github.com/GhostTypes/ff-5mp-hass - Category: Integration
- Search "FlashForge" and install
Manual Installation
- Download
Source code (zip)below - Extract
custom_components/flashforge/folder - Copy to your Home Assistant
config/custom_components/directory - Restart Home Assistant
README: https://github.com/GhostTypes/ff-5mp-hass/blob/v1.1.9/README.md
Changelog: https://github.com/GhostTypes/ff-5mp-hass/blob/v1.1.9/CHANGELOG.md
Full Changelog: v1.1.8...v1.1.9
v1.1.8
Added
- New
imageentity exposing the g-code thumbnail of the currently printing file. Fetched on demand via the printer's/gcodeThumbHTTP endpoint and cached per-filename so the cache only invalidates when the active file changes.
Installation
Via HACS (Recommended)
- Open HACS -> Integrations
- Click the menu -> Custom repositories
- Add:
https://github.com/GhostTypes/ff-5mp-hass - Category: Integration
- Search "FlashForge" and install
Manual Installation
- Download
Source code (zip)below - Extract
custom_components/flashforge/folder - Copy to your Home Assistant
config/custom_components/directory - Restart Home Assistant
README: https://github.com/GhostTypes/ff-5mp-hass/blob/v1.1.8/README.md
Changelog: https://github.com/GhostTypes/ff-5mp-hass/blob/v1.1.8/CHANGELOG.md
Full Changelog: v1.1.7...v1.1.8
v1.1.7
Fixed
- Resolved "Config flow could not be loaded: Invalid handler specified" on Home Assistant 2026.4.x / Python 3.14 (#10). Root cause: the upstream
flashforge-python-apidepended onnetifaces, which is source-only on PyPI and has no Python 3.14 wheel — install failed inside the HA environment, the integration's top-levelfrom flashforge import ...raisedImportError, and HA reported the generic invalid-handler error for both auto-discovery and manual setup paths. - Bumped
flashforge-python-apirequirement to>=1.2.2, which replacesnetifaceswith the pure-Pythonifaddrlibrary (already a transitive dependency of Home Assistant viazeroconf).
Installation
Via HACS (Recommended)
- Open HACS -> Integrations
- Click the menu -> Custom repositories
- Add:
https://github.com/GhostTypes/ff-5mp-hass - Category: Integration
- Search "FlashForge" and install
Manual Installation
- Download
Source code (zip)below - Extract
custom_components/flashforge/folder - Copy to your Home Assistant
config/custom_components/directory - Restart Home Assistant
README: https://github.com/GhostTypes/ff-5mp-hass/blob/v1.1.7/README.md
Changelog: https://github.com/GhostTypes/ff-5mp-hass/blob/v1.1.7/CHANGELOG.md
Full Changelog: v1.1.6...v1.1.7
v1.1.6
Fixed
- Fixed AD5X entities going unavailable while printing due to
currentPrintSpeed/printSpeedAdjustPydantic validation rejecting values above 200 (AD5X reports up to 500) - Fixed HTTP connection churn caused by per-request
aiohttp.ClientSession()creation across all API control modules — now uses a shared session with proper timeout handling - Fixed intermittent timeouts during print operations by increasing the default HTTP timeout from 5s to 15s
- Updated dependency to
flashforge-python-api>=1.2.1which includes all of the above upstream fixes (contributed by @spawnegit in ff-5mp-api-py#12)
Installation
Via HACS (Recommended)
- Open HACS -> Integrations
- Click the menu -> Custom repositories
- Add:
https://github.com/GhostTypes/ff-5mp-hass - Category: Integration
- Search "FlashForge" and install
Manual Installation
- Download
Source code (zip)below - Extract
custom_components/flashforge/folder - Copy to your Home Assistant
config/custom_components/directory - Restart Home Assistant
README: https://github.com/GhostTypes/ff-5mp-hass/blob/v1.1.6/README.md
Changelog: https://github.com/GhostTypes/ff-5mp-hass/blob/v1.1.6/CHANGELOG.md
Full Changelog: v1.1.5...v1.1.6
v1.1.5
Installation
Via HACS (Recommended)
- Open HACS -> Integrations
- Click the menu -> Custom repositories
- Add:
https://github.com/GhostTypes/ff-5mp-hass - Category: Integration
- Search "FlashForge" and install
Manual Installation
- Download
Source code (zip)below - Extract
custom_components/flashforge/folder - Copy to your Home Assistant
config/custom_components/directory - Restart Home Assistant
README: https://github.com/GhostTypes/ff-5mp-hass/blob/v1.1.5/README.md
Changelog: https://github.com/GhostTypes/ff-5mp-hass/blob/v1.1.5/CHANGELOG.md
Compare: v1.1.4...v1.1.5
v1.1.4
Fixed
- Registered the filtration select platform so select.flashforge_filtration_mode now loads correctly
- Restricted discovery and setup to supported modern HTTP printers only: AD5X, Adventurer 5M, and Adventurer 5M Pro
- Corrected the README, support matrix, entity counts, and camera behavior notes for the 1.1.4 release
- Fixed AD5X compatibility when newer firmware returns additional /detail fields during setup and polling
Changed
- Moved the LED availability workaround into flashforge-python-api client configuration instead of mutating integration state directly
- Updated dependency to flashforge-python-api>=1.1.1 for modern-printer discovery improvements, AD5X detection, library-level LED override support, and newer AD5X /detail response compatibility
- Preserved the manual LED override for aftermarket LED installs while routing it through the library-level override model used by HACS installs
- Switched the camera entity to runtime OEM stream detection while keeping camera power control limited to Pro models
v1.1.3
📦 Installation
Via HACS (Recommended)
- Open HACS → Integrations
- Click ⋮ → Custom repositories
- Add:
https://github.com/GhostTypes/ff-5mp-hass - Category: Integration
- Search "FlashForge" and install
Manual Installation
- Download
Source code (zip)below - Extract
custom_components/flashforge/folder - Copy to your Home Assistant
config/custom_components/directory - Restart Home Assistant
Full Changelog: https://github.com/GhostTypes/ff-5mp-hass/blob/main/CHANGELOG.md
v1.1.2
📦 Installation
Via HACS (Recommended)
- Open HACS → Integrations
- Click ⋮ → Custom repositories
- Add:
https://github.com/GhostTypes/ff-5mp-hass - Category: Integration
- Search "FlashForge" and install
Manual Installation
- Download
Source code (zip)below - Extract
custom_components/flashforge/folder - Copy to your Home Assistant
config/custom_components/directory - Restart Home Assistant
Full Changelog: https://github.com/GhostTypes/ff-5mp-hass/blob/main/CHANGELOG.md