Skip to content

feat: rewrite integration (3.0.0)#31

Draft
g4bri3lDev wants to merge 24 commits into
mainfrom
feat/clean-port
Draft

feat: rewrite integration (3.0.0)#31
g4bri3lDev wants to merge 24 commits into
mainfrom
feat/clean-port

Conversation

@g4bri3lDev
Copy link
Copy Markdown
Member

@g4bri3lDev g4bri3lDev commented May 24, 2026

Summary

  • Replaces the old imagegen-based rendering with odl-renderer
  • Ports the core OpenDisplay integration as a custom component base
  • Adds drawcustom service with voluptuous schema validation
  • Adds upload_image service
  • Adds touch event entities for OpenDisplay touch controllers
  • Adds font directory search (/config/www/fonts, /config/media/fonts, /media/fonts)
  • Adds activate_led and activate_buzzer services for Flex devices
  • Adds firmware update entity (polls GitHub releases for latest version)
  • Adds RSSI and last-seen diagnostic sensors (all devices, disabled by default)
  • Fix: Upload error messages now include the underlying cause
  • Fix: BLE END ACK timeout raised to 90s, resolving false upload failures on slow displays
  • Removes OEPL and ATC support
  • Requires Home Assistant 2026.4.0+

Closes

Closes #27
Closes #28
Closes #29

g4bri3lDev added 24 commits May 24, 2026 14:12
… odl-renderer, bump py-opendisplay to 7.2.5)
Pass HA font search directories (/config/www/fonts, /config/media/fonts,
/media/fonts) to generate_image() so users can reference custom fonts by
name without absolute paths. Requires odl-renderer 0.5.8 which adds the
font_dirs parameter to FontManager and generate_image().
- SCHEMA_DRAWCUSTOM validates payload, background, rotate, dither,
  refresh_type and dry-run at the service boundary rather than at
  runtime inside the renderer
- _async_send_image centralises BLE connection, encryption key parsing
  and error handling; used by both upload_image and drawcustom
ImageGen was replaced by odl-renderer; rendering logic is now tested
in the odl-renderer package itself.
Delete empty tests/ dir, requirements_test.txt, tests workflow, and
pytest config now that all drawcustom tests have been removed.
Remove .claude/, .run/, ha_data_provider.md, and uv.lock from
version control; add them to .gitignore.
The upload_error exception swallowed the original OpenDisplayError message,
making it hard to diagnose failures. Pass str(err) as a translation placeholder
so the underlying cause is shown in the HA notification.
Both sensors are diagnostic and disabled by default. All devices now
load the sensor platform (moved Platform.SENSOR to _BASE_PLATFORMS),
so non-flex devices get temperature, RSSI, and last-seen; battery
sensors remain gated on power mode as before.

The sensor value_fn signature is widened from AdvertisementData to
OpenDisplayUpdate to give access to coordinator-level fields (RSSI,
last_seen) alongside advertisement payload fields.

Also syncs en.json with strings.json (adds translations for the new
sensors, update entity, no_leds/no_buzzers exceptions, and the
activate_led/activate_buzzer/drawcustom services that were missing).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Remove OEPL and ATC support Switch to python modules Rewrite Integration

1 participant