Extracts color processing and calibration out of WledPictureTarget into a new PictureColorStripSource entity, enabling multiple LED targets to share one capture/processing pipeline. New entities & processing: - storage/color_strip_source.py: ColorStripSource + PictureColorStripSource models - storage/color_strip_store.py: JSON-backed CRUD store (prefix css_) - core/processing/color_strip_stream.py: ColorStripStream ABC + PictureColorStripStream (runs border-extract → map → smooth → brightness/sat/gamma in background thread) - core/processing/color_strip_stream_manager.py: ref-counted shared stream manager Modified storage/processing: - WledPictureTarget simplified to device_id + color_strip_source_id + standby_interval + state_check_interval - Device model: calibration field removed - WledTargetProcessor: acquires ColorStripStream from manager instead of running its own pipeline - ProcessorManager: wires ColorStripStreamManager into TargetContext API layer: - New routes: GET/POST/PUT/DELETE /api/v1/color-strip-sources, PUT calibration/test - Removed calibration endpoints from /devices - Updated /picture-targets CRUD for new target structure Frontend: - New color-strips.js module with CSS editor modal and card rendering - Calibration modal extended with CSS mode (css-id hidden field + device picker) - targets.js: Color Strip Sources section added to LED tab; target editor/card updated - app.js: imports and window globals for CSS + showCSSCalibration - en.json / ru.json: color_strip.* and targets.section.color_strips keys added Data migration runs at startup: existing WledPictureTargets are converted to reference a new PictureColorStripSource created from their old settings. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
138 lines
3.3 KiB
Python
138 lines
3.3 KiB
Python
"""Pydantic schemas for API request and response models."""
|
|
|
|
from .common import (
|
|
CaptureImage,
|
|
BorderExtraction,
|
|
ErrorResponse,
|
|
PerformanceMetrics,
|
|
TemplateTestResponse,
|
|
)
|
|
from .system import (
|
|
DisplayInfo,
|
|
DisplayListResponse,
|
|
HealthResponse,
|
|
VersionResponse,
|
|
)
|
|
from .devices import (
|
|
Calibration,
|
|
CalibrationTestModeRequest,
|
|
CalibrationTestModeResponse,
|
|
DeviceCreate,
|
|
DeviceListResponse,
|
|
DeviceResponse,
|
|
DeviceStateResponse,
|
|
DeviceUpdate,
|
|
)
|
|
from .color_strip_sources import (
|
|
ColorStripSourceCreate,
|
|
ColorStripSourceListResponse,
|
|
ColorStripSourceResponse,
|
|
ColorStripSourceUpdate,
|
|
CSSCalibrationTestRequest,
|
|
)
|
|
from .picture_targets import (
|
|
PictureTargetCreate,
|
|
PictureTargetListResponse,
|
|
PictureTargetResponse,
|
|
PictureTargetUpdate,
|
|
TargetMetricsResponse,
|
|
TargetProcessingState,
|
|
)
|
|
from .templates import (
|
|
EngineInfo,
|
|
EngineListResponse,
|
|
TemplateAssignment,
|
|
TemplateCreate,
|
|
TemplateListResponse,
|
|
TemplateResponse,
|
|
TemplateTestRequest,
|
|
TemplateUpdate,
|
|
)
|
|
from .filters import (
|
|
FilterInstanceSchema,
|
|
FilterOptionDefSchema,
|
|
FilterTypeListResponse,
|
|
FilterTypeResponse,
|
|
)
|
|
from .postprocessing import (
|
|
PostprocessingTemplateCreate,
|
|
PostprocessingTemplateListResponse,
|
|
PostprocessingTemplateResponse,
|
|
PostprocessingTemplateUpdate,
|
|
PPTemplateTestRequest,
|
|
)
|
|
from .pattern_templates import (
|
|
PatternTemplateCreate,
|
|
PatternTemplateListResponse,
|
|
PatternTemplateResponse,
|
|
PatternTemplateUpdate,
|
|
)
|
|
from .picture_sources import (
|
|
ImageValidateRequest,
|
|
ImageValidateResponse,
|
|
PictureSourceCreate,
|
|
PictureSourceListResponse,
|
|
PictureSourceResponse,
|
|
PictureSourceTestRequest,
|
|
PictureSourceUpdate,
|
|
)
|
|
|
|
__all__ = [
|
|
"CaptureImage",
|
|
"BorderExtraction",
|
|
"ErrorResponse",
|
|
"PerformanceMetrics",
|
|
"TemplateTestResponse",
|
|
"DisplayInfo",
|
|
"DisplayListResponse",
|
|
"HealthResponse",
|
|
"VersionResponse",
|
|
"Calibration",
|
|
"CalibrationTestModeRequest",
|
|
"CalibrationTestModeResponse",
|
|
"DeviceCreate",
|
|
"DeviceListResponse",
|
|
"DeviceResponse",
|
|
"DeviceStateResponse",
|
|
"DeviceUpdate",
|
|
"ColorStripSourceCreate",
|
|
"ColorStripSourceListResponse",
|
|
"ColorStripSourceResponse",
|
|
"ColorStripSourceUpdate",
|
|
"CSSCalibrationTestRequest",
|
|
"PictureTargetCreate",
|
|
"PictureTargetListResponse",
|
|
"PictureTargetResponse",
|
|
"PictureTargetUpdate",
|
|
"TargetMetricsResponse",
|
|
"TargetProcessingState",
|
|
"EngineInfo",
|
|
"EngineListResponse",
|
|
"TemplateAssignment",
|
|
"TemplateCreate",
|
|
"TemplateListResponse",
|
|
"TemplateResponse",
|
|
"TemplateTestRequest",
|
|
"TemplateUpdate",
|
|
"FilterInstanceSchema",
|
|
"FilterOptionDefSchema",
|
|
"FilterTypeListResponse",
|
|
"FilterTypeResponse",
|
|
"PostprocessingTemplateCreate",
|
|
"PostprocessingTemplateListResponse",
|
|
"PostprocessingTemplateResponse",
|
|
"PostprocessingTemplateUpdate",
|
|
"PPTemplateTestRequest",
|
|
"PatternTemplateCreate",
|
|
"PatternTemplateListResponse",
|
|
"PatternTemplateResponse",
|
|
"PatternTemplateUpdate",
|
|
"ImageValidateRequest",
|
|
"ImageValidateResponse",
|
|
"PictureSourceCreate",
|
|
"PictureSourceListResponse",
|
|
"PictureSourceResponse",
|
|
"PictureSourceTestRequest",
|
|
"PictureSourceUpdate",
|
|
]
|