79 lines
2.0 KiB
Python
79 lines
2.0 KiB
Python
from dataclasses import dataclass
|
|
from typing import Any
|
|
|
|
from . import memory, pattern
|
|
|
|
|
|
@dataclass
|
|
class Status:
|
|
"""
|
|
Represents the status of a flickerstrip.
|
|
"""
|
|
|
|
ap: int
|
|
name: str
|
|
group: str
|
|
firmware: str
|
|
power: bool
|
|
mac: str
|
|
selectedPattern: int
|
|
brightness: int
|
|
length: int
|
|
start: int
|
|
end: int
|
|
fade: int
|
|
isReversed: bool
|
|
cycle: int
|
|
uptime: int
|
|
memory: memory.Usage
|
|
patterns: list[pattern.Pattern]
|
|
|
|
def to_json(self) -> Any:
|
|
"""
|
|
Converts the status to a JSON object.
|
|
"""
|
|
return {
|
|
"ap": self.ap,
|
|
"name": self.name,
|
|
"group": self.group,
|
|
"firmware": self.firmware,
|
|
"power": self.power,
|
|
"mac": self.mac,
|
|
"selectedPattern": self.selectedPattern,
|
|
"brightness": self.brightness,
|
|
"length": self.length,
|
|
"start": self.start,
|
|
"end": self.end,
|
|
"fade": self.fade,
|
|
"isReversed": self.isReversed,
|
|
"cycle": self.cycle,
|
|
"uptime": self.uptime,
|
|
"memory": self.memory.to_json(),
|
|
"patterns": [p.to_json() for p in self.patterns],
|
|
}
|
|
|
|
@classmethod
|
|
def from_json(cls, data: Any) -> "Status":
|
|
"""
|
|
Creates a Status from a JSON object.
|
|
"""
|
|
return cls(
|
|
ap=data["ap"],
|
|
name=data["name"],
|
|
group=data["group"],
|
|
firmware=data["firmware"],
|
|
power=data["power"],
|
|
mac=data["mac"],
|
|
selectedPattern=data["selectedPattern"],
|
|
brightness=data["brightness"],
|
|
length=data["length"],
|
|
start=data["start"],
|
|
end=data["end"],
|
|
fade=data["fade"],
|
|
isReversed=data["isReversed"],
|
|
cycle=data["cycle"],
|
|
uptime=data["uptime"],
|
|
memory=memory.Usage.from_json(data["memory"]),
|
|
patterns=[pattern.Pattern.from_json(p) for p in data["patterns"]],
|
|
)
|