forked from genewildish/Mainline
37 lines
811 B
Python
37 lines
811 B
Python
"""
|
|
Figment trigger protocol and command types.
|
|
|
|
Defines the extensible input abstraction for triggering figment displays
|
|
from any control surface (ntfy, MQTT, serial, etc.).
|
|
"""
|
|
|
|
from __future__ import annotations
|
|
|
|
from dataclasses import dataclass
|
|
from enum import Enum
|
|
from typing import Protocol
|
|
|
|
|
|
class FigmentAction(Enum):
|
|
TRIGGER = "trigger"
|
|
SET_INTENSITY = "set_intensity"
|
|
SET_INTERVAL = "set_interval"
|
|
SET_COLOR = "set_color"
|
|
STOP = "stop"
|
|
|
|
|
|
@dataclass
|
|
class FigmentCommand:
|
|
action: FigmentAction
|
|
value: float | str | None = None
|
|
|
|
|
|
class FigmentTrigger(Protocol):
|
|
"""Protocol for figment trigger sources.
|
|
|
|
Any input source (ntfy, MQTT, serial) can implement this
|
|
to trigger and control figment displays.
|
|
"""
|
|
|
|
def poll(self) -> FigmentCommand | None: ...
|