flickerstrip-py/flickerstrip_py/status.py

66 lines
2.2 KiB
Python

from flickerstrip_py.pattern import PatternMeta
class MemoryUsage:
def __init__(self, used, free, total):
self.used = used
self.free = free
self.total = total
def to_json(self):
return {
"used": self.used, "free": self.free, "total": self.total
}
@classmethod
def from_json(cls, json):
return cls(json["used"], json["free"], json["total"])
class Status:
def __init__(
self, ap, name, group, firmware, power, mac,
selectedPattern, brightness, length, start, end,
fade, isReversed, cycle, uptime, memory, patterns
):
self.ap = ap
self.name = name
self.group = group
self.firmware = firmware
self.power = power
self.mac = mac
self.selectedPattern = selectedPattern
self.brightness = brightness
self.length = length
self.start = start
self.end = end
self.fade = fade
self.isReversed = isReversed
self.cycle = cycle
self.uptime = uptime
self.memory = memory
self.patterns = patterns
def to_json(self):
return {
"ap": self.ap, "name": self.name, "group": self.group,
"firmware": self.firmware, "power": 1 if self.power else 0,
"mac": self.mac, "selectedPattern": self.selectedPattern,
"brightness": self.brightness, "length": self.length,
"start": self.start, "end": self.end, "fade": self.fade,
"reversed": 1 if self.isReversed else 0, "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, json):
return cls(
json["ap"], json["name"], json["group"], json["firmware"],
json["power"] == 1, json["mac"], json["selectedPattern"],
json["brightness"], json["length"], json["start"], json["end"],
json["fade"], json["reversed"] == 1, json["cycle"],
json["uptime"], MemoryUsage.from_json(json["memory"]),
[PatternMeta.from_json(p) for p in json["patterns"]]
)