API Input CSS rework:
- Remove led_count field from ApiInputColorStripSource (always auto-sizes)
- Add segment-based payload: solid, per_pixel, gradient modes
- Segments applied in order (last wins on overlap), auto-grow buffer
- Backward compatible: legacy {"colors": [...]} still works
- Pydantic validation: mode-specific field requirements
Test preview:
- Enable test preview button on api_input cards
- Hide LED/FPS controls for api_input (sender controls those)
- Show input source selector for all CSS tests (preselected)
- FPS sparkline chart using shared createFpsSparkline (same as target cards)
- Server only sends frames when push_generation changes (no idle frames)
HAOS integration:
- New light.py: ApiInputLight entity per api_input source (RGB + brightness)
- turn_on pushes solid segment, turn_off pushes fallback color
- Register wled_screen_controller.set_leds service for arbitrary segments
- New services.yaml with field definitions
- Coordinator: push_colors() and push_segments() methods
- Platform.LIGHT added to platforms list
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
20 lines
576 B
YAML
20 lines
576 B
YAML
set_leds:
|
|
name: Set LEDs
|
|
description: Push segment data to an api_input color strip source
|
|
fields:
|
|
source_id:
|
|
name: Source ID
|
|
description: The api_input CSS source ID (e.g., css_abc12345)
|
|
required: true
|
|
selector:
|
|
text:
|
|
segments:
|
|
name: Segments
|
|
description: >
|
|
List of segment objects. Each segment has: start (int), length (int),
|
|
mode ("solid"/"per_pixel"/"gradient"), color ([R,G,B] for solid),
|
|
colors ([[R,G,B],...] for per_pixel/gradient)
|
|
required: true
|
|
selector:
|
|
object:
|