{"id":34742063,"url":"https://github.com/ghosttypes/ff-5mp-hass","last_synced_at":"2026-05-31T02:05:52.976Z","repository":{"id":322151058,"uuid":"1088002054","full_name":"GhostTypes/ff-5mp-hass","owner":"GhostTypes","description":"Powerful Home Assistant plugin for FlashForge 3D printers","archived":false,"fork":false,"pushed_at":"2026-03-23T21:31:41.000Z","size":1796,"stargazers_count":10,"open_issues_count":1,"forks_count":1,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-02T08:32:47.346Z","etag":null,"topics":["3d-printer","flashforge","hacs","home-assistant","home-assistant-integration"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/GhostTypes.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2025-11-02T04:56:17.000Z","updated_at":"2026-03-23T21:31:45.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/GhostTypes/ff-5mp-hass","commit_stats":null,"previous_names":["ghosttypes/ff-5mp-hass"],"tags_count":9,"template":false,"template_full_name":null,"purl":"pkg:github/GhostTypes/ff-5mp-hass","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GhostTypes%2Fff-5mp-hass","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GhostTypes%2Fff-5mp-hass/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GhostTypes%2Fff-5mp-hass/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GhostTypes%2Fff-5mp-hass/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/GhostTypes","download_url":"https://codeload.github.com/GhostTypes/ff-5mp-hass/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GhostTypes%2Fff-5mp-hass/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32362782,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-27T20:07:02.737Z","status":"online","status_checked_at":"2026-04-28T02:00:07.250Z","response_time":56,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["3d-printer","flashforge","hacs","home-assistant","home-assistant-integration"],"created_at":"2025-12-25T04:18:57.383Z","updated_at":"2026-05-31T02:05:52.969Z","avatar_url":"https://github.com/GhostTypes.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n  \u003ch1\u003eFlashForge 3D Printer Integration for Home Assistant\u003c/h1\u003e\n  \u003cp\u003eA Home Assistant custom integration for modern FlashForge printers using the local HTTP API in LAN mode for reliable, real-time monitoring and control.\u003c/p\u003e\n\u003c/div\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/hacs/integration\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/HACS-Custom-41BDF5.svg?style=for-the-badge\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://github.com/GhostTypes/ff-5mp-hass/releases\"\u003e\n    \u003cimg src=\"https://img.shields.io/github/release/GhostTypes/ff-5mp-hass.svg?style=for-the-badge\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"LICENSE\"\u003e\n    \u003cimg src=\"https://img.shields.io/github/license/GhostTypes/ff-5mp-hass.svg?style=for-the-badge\"\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/HA%20Min-2025.1.0-blue.svg?style=for-the-badge\u0026logo=homeassistant\u0026logoColor=white\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/HA%20Tested-2026.4.2-brightgreen.svg?style=for-the-badge\u0026logo=homeassistant\u0026logoColor=white\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/Python-3.11+-blue.svg?style=for-the-badge\u0026logo=python\u0026logoColor=white\"\u003e\n\u003c/p\u003e\n\n\n\n\u003cdiv align=\"center\"\u003e\n  \u003ch2\u003eFeatures\u003c/h2\u003e\n\u003c/div\u003e\n\n\u003cdiv align=\"center\"\u003e\n\u003ctable\u003e\n  \u003ctr\u003e\n    \u003cth\u003eCategory\u003c/th\u003e\n    \u003cth\u003eFeature\u003c/th\u003e\n    \u003cth\u003eDetails\u003c/th\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd rowspan=\"4\"\u003e\u003cb\u003eMonitoring\u003c/b\u003e\u003c/td\u003e\n    \u003ctd\u003e28 Sensors\u003c/td\u003e\n    \u003ctd\u003eReal-time temperatures, print progress, filament tracking, fan speeds, air quality (5M Pro TVOC), active IFS slot, print completion time, lifetime statistics, and diagnostics\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd\u003e4 Binary Sensors\u003c/td\u003e\n    \u003ctd\u003ePrinting status, connectivity, error detection, pause state\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd\u003eLive Camera Feed\u003c/td\u003e\n    \u003ctd\u003eMJPEG stream auto-detected from the printer-reported camera stream URL or the standard OEM fallback endpoint when firmware omits it\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd\u003e5 Image Entities\u003c/td\u003e\n    \u003ctd\u003eActive g-code thumbnail, plus 4 AD5X IFS slot color swatches (filament color + material label)\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd rowspan=\"3\"\u003e\u003cb\u003eControl\u003c/b\u003e\u003c/td\u003e\n    \u003ctd\u003eSwitches\u003c/td\u003e\n    \u003ctd\u003eLED control, plus Pro-only camera power toggle\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd\u003eSelect Entity\u003c/td\u003e\n    \u003ctd\u003eFiltration mode control (Off/Internal/External)\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd\u003e4 Buttons\u003c/td\u003e\n    \u003ctd\u003ePause, resume, cancel print jobs, and clear printer status directly from Home Assistant\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd rowspan=\"4\"\u003e\u003cb\u003eArchitecture\u003c/b\u003e\u003c/td\u003e\n    \u003ctd\u003eHTTP-First Design\u003c/td\u003e\n    \u003ctd\u003eSuperior reliability compared to TCP-only implementations\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd\u003eAsync/Await\u003c/td\u003e\n    \u003ctd\u003eFully asynchronous for optimal Home Assistant integration\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd\u003eAuto-Discovery\u003c/td\u003e\n    \u003ctd\u003eUDP-based network discovery with manual fallback\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd\u003eConfigurable Polling\u003c/td\u003e\n    \u003ctd\u003eAdjust update frequency from 5-300 seconds\u003c/td\u003e\n  \u003c/tr\u003e\n\u003c/table\u003e\n\u003c/div\u003e\n\n\n\n\u003cdiv align=\"center\"\u003e\n  \u003ch2\u003eSupported Hardware\u003c/h2\u003e\n\u003c/div\u003e\n\n\u003cdiv align=\"center\"\u003e\n\u003ctable\u003e\n  \u003ctr\u003e\n    \u003cth\u003ePrinter Model\u003c/th\u003e\n    \u003cth\u003eSupport Status\u003c/th\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd\u003eFlashForge Adventurer 5M\u003c/td\u003e\n    \u003ctd\u003eSupported\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd\u003eFlashForge Adventurer 5M Pro\u003c/td\u003e\n    \u003ctd\u003eSupported\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd\u003eFlashForge AD5X\u003c/td\u003e\n    \u003ctd\u003eSupported\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd\u003eLegacy TCP-only models (including Adventurer 4)\u003c/td\u003e\n    \u003ctd\u003eNot Supported\u003c/td\u003e\n  \u003c/tr\u003e\n\u003c/table\u003e\n\u003c/div\u003e\n\n\u003cdiv align=\"center\"\u003e\n\u003cp\u003e\u003ci\u003eFeature availability is detected at runtime. The camera entity is always created, and it becomes available when the printer reports an active OEM stream URL or the standard OEM fallback stream endpoint responds. The camera power switch remains Pro-only.\u003c/i\u003e\u003c/p\u003e\n\u003cp\u003e\u003ci\u003eThis integration does not support legacy TCP-only printers.\u003c/i\u003e\u003c/p\u003e\n\u003c/div\u003e\n\n\n\n\u003cdiv align=\"center\"\u003e\n  \u003ch2\u003eRequirements\u003c/h2\u003e\n\u003c/div\u003e\n\n\u003cdiv align=\"center\"\u003e\n\n| Requirement | Details |\n|-------------|---------|\n| **Home Assistant** | 2025.1.0 or newer |\n| **Python Library** | [flashforge-python-api](https://pypi.org/project/flashforge-python-api/) 1.2.0+ |\n| **Network** | Local LAN connectivity to printer |\n| **Printer Setup** | LAN mode enabled with serial number and check code |\n\n\u003c/div\u003e\n\n\n\u003cdiv align=\"center\"\u003e\n  \u003ch2\u003eInstallation\u003c/h2\u003e\n\u003c/div\u003e\n\n\u003cdiv align=\"center\"\u003e\n\n| Method | Steps |\n|--------|-------|\n| **Via HACS (Recommended)** | 1. Open **HACS** in Home Assistant\u003cbr\u003e2. Click on **Integrations**\u003cbr\u003e3. Click the **⋮** menu (top right) → **Custom repositories**\u003cbr\u003e4. Add repository:\u003cbr\u003e\u0026nbsp;\u0026nbsp;\u0026nbsp;• **URL**: `https://github.com/GhostTypes/ff-5mp-hass`\u003cbr\u003e\u0026nbsp;\u0026nbsp;\u0026nbsp;• **Category**: `Integration`\u003cbr\u003e5. Click **Add**\u003cbr\u003e6. Search for \"FlashForge\" in HACS\u003cbr\u003e7. Click **Download**\u003cbr\u003e8. **Restart Home Assistant** |\n| **Manual Installation** | 1. Download the [latest release](https://github.com/GhostTypes/ff-5mp-hass/releases)\u003cbr\u003e2. Extract the `custom_components/flashforge` folder\u003cbr\u003e3. Copy to your Home Assistant `config/custom_components/` directory\u003cbr\u003e4. Restart Home Assistant |\n\n\u003c/div\u003e\n\n\n\u003cdiv align=\"center\"\u003e\n  \u003ch2\u003eConfiguration\u003c/h2\u003e\n\u003c/div\u003e\n\n\u003cdiv align=\"center\"\u003e\n\n| Step | Instructions |\n|------|--------------|\n| **Prerequisites: Enable LAN Mode** | Before adding the integration, you must enable LAN mode on your FlashForge printer:\u003cbr\u003e\u003cbr\u003e1. On the printer touchscreen, go to **Settings** → **Network** → **LAN Mode**\u003cbr\u003e2. Enable LAN mode\u003cbr\u003e3. Note the **Check Code** (8-digit code) - you'll need this for setup\u003cbr\u003e\u003cbr\u003e[Video Tutorial](https://www.youtube.com/watch?v=krdEGccZuKo) |\n| **Option 1: Automatic Discovery (Recommended)** | 1. Go to **Settings** → **Devices \u0026 Services** → **Integrations**\u003cbr\u003e2. Click **+ Add Integration**\u003cbr\u003e3. Search for **\"FlashForge\"**\u003cbr\u003e4. Select your AD5X, Adventurer 5M, or Adventurer 5M Pro from the discovered list\u003cbr\u003e5. Enter your printer's **Check Code**\u003cbr\u003e6. Click **Submit** |\n| **Option 2: Manual Configuration** | 1. Go to **Settings** → **Devices \u0026 Services** → **Integrations**\u003cbr\u003e2. Click **+ Add Integration**\u003cbr\u003e3. Search for **\"FlashForge\"**\u003cbr\u003e4. Select **\"Configure Manually\"**\u003cbr\u003e5. Enter:\u003cbr\u003e\u0026nbsp;\u0026nbsp;\u0026nbsp;• **IP Address**: Your printer's IP (e.g., `192.168.1.100`)\u003cbr\u003e\u0026nbsp;\u0026nbsp;\u0026nbsp;• **Printer Name**: Friendly name (optional)\u003cbr\u003e\u0026nbsp;\u0026nbsp;\u0026nbsp;• **Serial Number**: From printer settings\u003cbr\u003e\u0026nbsp;\u0026nbsp;\u0026nbsp;• **Check Code**: From LAN mode settings\u003cbr\u003e6. Click **Submit** |\n| **Configuration Options** | After setup, you can adjust settings:\u003cbr\u003e\u003cbr\u003e1. Go to **Settings** → **Devices \u0026 Services** → **FlashForge**\u003cbr\u003e2. Click **⋮** on your printer → **Configure**\u003cbr\u003e3. **Scan Interval**: Update frequency in seconds (5-300, default: 10) |\n| **LED Switch Override** | If your printer's LED switch is not detected but you know it is supported, enable **Always show LED switch** in the options. This will force the LED switch to appear regardless of printer capability checks. |\n\n\u003c/div\u003e\n\n\n\n\u003cdiv align=\"center\"\u003e\n  \u003ch2\u003eAvailable Entities\u003c/h2\u003e\n\u003c/div\u003e\n\n\u003cdiv align=\"center\"\u003e\n\n### Sensors\n\n\u003c/div\u003e\n\n\u003cdiv align=\"center\"\u003e\n\n| Entity | Description | Unit |\n|--------|-------------|------|\n| `sensor.flashforge_machine_status` | Current printer state (idle, printing, paused, error) | - |\n| `sensor.flashforge_nozzle_temperature` | Current extruder temperature | °C |\n| `sensor.flashforge_nozzle_target_temperature` | Target extruder temperature | °C |\n| `sensor.flashforge_bed_temperature` | Current bed temperature | °C |\n| `sensor.flashforge_bed_target_temperature` | Target bed temperature | °C |\n| `sensor.flashforge_print_progress` | Print completion percentage | % |\n| `sensor.flashforge_current_file` | Currently printing file name | - |\n| `sensor.flashforge_current_layer` | Current layer number | - |\n| `sensor.flashforge_total_layers` | Total layer count | - |\n| `sensor.flashforge_elapsed_time` | Time spent printing | seconds |\n| `sensor.flashforge_remaining_time` | Estimated time remaining | seconds |\n| `sensor.flashforge_filament_length` | Estimated filament length needed | meters |\n| `sensor.flashforge_filament_weight` | Estimated filament weight | grams |\n| `sensor.flashforge_print_speed` | Speed adjustment percentage | % |\n| `sensor.flashforge_z_offset` | Z-axis compensation | mm |\n| `sensor.flashforge_nozzle_size` | Installed nozzle size | - |\n| `sensor.flashforge_filament_type` | Current filament type | - |\n| `sensor.flashforge_lifetime_filament` | Total filament used over printer lifetime | meters |\n| `sensor.flashforge_lifetime_runtime` | Total runtime over printer lifetime | - |\n\n\u003c/div\u003e\n\n\u003cdiv align=\"center\"\u003e\n\n### Binary Sensors\n\n\u003c/div\u003e\n\n\u003cdiv align=\"center\"\u003e\n\n| Entity | Description | Device Class |\n|--------|-------------|--------------|\n| `binary_sensor.flashforge_printing` | On when actively printing | `running` |\n| `binary_sensor.flashforge_online` | On when printer is connected | `connectivity` |\n| `binary_sensor.flashforge_error` | On when error detected | `problem` |\n| `binary_sensor.flashforge_paused` | On when print is paused | - |\n\n\u003c/div\u003e\n\n\u003cdiv align=\"center\"\u003e\n\n### Switches\n\n\u003c/div\u003e\n\n\u003cdiv align=\"center\"\u003e\n\n| Entity | Description | Availability |\n|--------|-------------|--------------|\n| `switch.flashforge_led` | Control printer LED lights | All Models |\n| `switch.flashforge_camera` | Toggle the OEM camera power state | Pro models |\n\n\u003c/div\u003e\n\n\u003cdiv align=\"center\"\u003e\n\n### Select Entities\n\n\u003c/div\u003e\n\n\u003cdiv align=\"center\"\u003e\n\n| Entity | Description | Options | Availability |\n|--------|-------------|---------|--------------|\n| `select.flashforge_filtration_mode` | Control filtration system | Off, Internal, External | Model-dependent |\n\n\u003c/div\u003e\n\n\u003cdiv align=\"center\"\u003e\n\n### Buttons\n\n\u003c/div\u003e\n\n\u003cdiv align=\"center\"\u003e\n\n| Entity | Description |\n|--------|-------------|\n| `button.flashforge_pause_print` | Pause active print job |\n| `button.flashforge_resume_print` | Resume paused print job |\n| `button.flashforge_cancel_print` | Cancel and abort print job |\n| `button.flashforge_clear_status` | Clear printer status/errors |\n\n\u003c/div\u003e\n\n\u003cdiv align=\"center\"\u003e\n\n### Camera\n\n\u003c/div\u003e\n\n\u003cdiv align=\"center\"\u003e\n\n| Entity | Description |\n|--------|-------------|\n| `camera.flashforge_camera` | Live MJPEG stream from the printer-reported OEM camera URL |\n\n\u003c/div\u003e\n\n\n\n\u003cdiv align=\"center\"\u003e\n  \u003ch2\u003eUsage Examples\u003c/h2\u003e\n\u003c/div\u003e\n\n\u003cdiv align=\"center\"\u003e\n\n### Automation: Notify When Print Completes\n\n\u003c/div\u003e\n\n```yaml\nautomation:\n  - alias: \"3D Print Complete Notification\"\n    trigger:\n      - platform: state\n        entity_id: binary_sensor.flashforge_printing\n        from: \"on\"\n        to: \"off\"\n    action:\n      - service: notify.mobile_app\n        data:\n          title: \"Print Complete\"\n          message: \"{{ states('sensor.flashforge_current_file') }} finished printing!\"\n```\n\n\u003cdiv align=\"center\"\u003e\n\n### Automation: Alert on Print Error\n\n\u003c/div\u003e\n\n```yaml\nautomation:\n  - alias: \"3D Printer Error Alert\"\n    trigger:\n      - platform: state\n        entity_id: binary_sensor.flashforge_error\n        to: \"on\"\n    action:\n      - service: notify.mobile_app\n        data:\n          title: \"Printer Error\"\n          message: \"FlashForge printer has encountered an error!\"\n          data:\n            priority: high\n```\n\n\u003cdiv align=\"center\"\u003e\n\n### Automation: Turn Off LED When Print Finishes\n\n\u003c/div\u003e\n\n```yaml\nautomation:\n  - alias: \"Turn Off Printer LED After Print\"\n    trigger:\n      - platform: state\n        entity_id: binary_sensor.flashforge_printing\n        from: \"on\"\n        to: \"off\"\n    action:\n      - service: switch.turn_off\n        target:\n          entity_id: switch.flashforge_led\n```\n\n\u003cdiv align=\"center\"\u003e\n\n### Lovelace Card Example\n\n\u003c/div\u003e\n\n```yaml\ntype: entities\ntitle: FlashForge Printer\nentities:\n  - entity: sensor.flashforge_machine_status\n  - entity: binary_sensor.flashforge_printing\n  - entity: sensor.flashforge_print_progress\n  - entity: sensor.flashforge_nozzle_temperature\n  - entity: sensor.flashforge_bed_temperature\n  - entity: sensor.flashforge_remaining_time\n  - type: divider\n  - entity: button.flashforge_pause_print\n  - entity: button.flashforge_resume_print\n  - entity: button.flashforge_cancel_print\n  - entity: button.flashforge_clear_status\n  - type: divider\n  - entity: switch.flashforge_led\n  - entity: switch.flashforge_camera\n  - entity: select.flashforge_filtration_mode\n```\n\n\u003cdiv align=\"center\"\u003e\n\n### Camera Card\n\n\u003c/div\u003e\n\n```yaml\ntype: picture-glance\ncamera_image: camera.flashforge_camera\nentities:\n  - binary_sensor.flashforge_printing\n  - sensor.flashforge_print_progress\n```\n\n\n\n\u003cdiv align=\"center\"\u003e\n  \u003ch2\u003eTroubleshooting\u003c/h2\u003e\n\u003c/div\u003e\n\n\u003cdiv align=\"center\"\u003e\n\n| Issue | Problem | Solutions |\n|-------|---------|-----------|\n| **Discovery Not Finding Printer** | Automatic discovery doesn't detect your printer | • Ensure printer is on the same network/subnet as Home Assistant\u003cbr\u003e• Check firewall settings (UDP port 18007 must be open)\u003cbr\u003e• Verify LAN mode is enabled on the printer\u003cbr\u003e• Try manual configuration with IP address |\n| **Connection Failed During Setup** | Setup fails with connection error | • Verify printer has LAN mode enabled\u003cbr\u003e• Check the check code is correct (codes can expire)\u003cbr\u003e• Ensure printer is powered on and connected to network\u003cbr\u003e• Test API access manually: `http://\u003cPRINTER_IP\u003e:8898/info`\u003cbr\u003e• Verify serial number matches printer label |\n| **Entities Show \"Unavailable\"** | Integration installed but entities are unavailable | • Check printer is online and reachable\u003cbr\u003e• Verify credentials are still valid\u003cbr\u003e• Reload the integration: Settings → Integrations → FlashForge → ⋮ → Reload\u003cbr\u003e• Check Home Assistant logs for connection errors |\n| **Camera Entity Unavailable** | The camera entity shows unavailable | • The camera entity is always created, but it only becomes available when the printer reports an active OEM camera stream URL or the standard OEM fallback stream endpoint responds\u003cbr\u003e• Verify the OEM camera is installed and enabled on the printer\u003cbr\u003e• The `switch.flashforge_camera` power control remains Pro-only |\n| **Python API Not Installing** | Integration fails due to missing flashforge-python-api | • Verify Home Assistant has internet access\u003cbr\u003e• Check PyPI is reachable: https://pypi.org/project/flashforge-python-api/\u003cbr\u003e• Try manual install: `pip install flashforge-python-api` in HA environment\u003cbr\u003e• Restart Home Assistant after installation |\n| **Static IP Recommended** | - | For best reliability, assign a static IP address to your printer in your router's DHCP settings. This prevents connection issues if the printer's IP changes. |\n\n\u003c/div\u003e\n\n\n\n\u003cdiv align=\"center\"\u003e\n  \u003ch2\u003eRelated Projects\u003c/h2\u003e\n\u003c/div\u003e\n\n\u003cdiv align=\"center\"\u003e\n\u003ctable\u003e\n  \u003ctr\u003e\n    \u003cth\u003eProject\u003c/th\u003e\n    \u003cth\u003eDescription\u003c/th\u003e\n    \u003cth\u003eLink\u003c/th\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd\u003ePython API Library\u003c/td\u003e\n    \u003ctd\u003eCore HTTP API client for FlashForge printers\u003c/td\u003e\n    \u003ctd\u003e\u003ca href=\"https://github.com/GhostTypes/ff-5mp-api-py\"\u003eff-5mp-api-py\u003c/a\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd\u003eTypeScript API Library\u003c/td\u003e\n    \u003ctd\u003eTypeScript/JavaScript API client\u003c/td\u003e\n    \u003ctd\u003e\u003ca href=\"https://github.com/GhostTypes/ff-5mp-api-ts\"\u003eff-5mp-api-ts\u003c/a\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd\u003eFlashForgeUI\u003c/td\u003e\n    \u003ctd\u003eCross-platform monitoring \u0026 control application\u003c/td\u003e\n    \u003ctd\u003e\u003ca href=\"https://github.com/Parallel-7/FlashForgeUI-Electron\"\u003eFlashForgeUI-Electron\u003c/a\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n\u003c/table\u003e\n\u003c/div\u003e\n\n\n\n\u003cdiv align=\"center\"\u003e\n  \u003ch2\u003eLicense\u003c/h2\u003e\n\u003c/div\u003e\n\n\u003cdiv align=\"center\"\u003e\n\u003cp\u003eThis project is licensed under the MIT License - see the \u003ca href=\"LICENSE\"\u003eLICENSE\u003c/a\u003e file for details.\u003c/p\u003e\n\u003c/div\u003e\n\n\n\n\u003cdiv align=\"center\"\u003e\n  \u003cp\u003e\u003cb\u003eIf you find this integration useful, please star the repository!\u003c/b\u003e\u003c/p\u003e\n\u003c/div\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fghosttypes%2Fff-5mp-hass","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fghosttypes%2Fff-5mp-hass","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fghosttypes%2Fff-5mp-hass/lists"}