40 lines
770 B
Python
40 lines
770 B
Python
from dataclasses import dataclass, fields as dataclass_fields
|
|
|
|
|
|
@dataclass
|
|
class BMSScalarField:
|
|
"""Single numeric or boolean measurement"""
|
|
|
|
help: str
|
|
raw_value: float | bool
|
|
value: str
|
|
units: str | None = None
|
|
|
|
def get(self, key, default=None):
|
|
return getattr(self, key, default)
|
|
|
|
|
|
@dataclass
|
|
class BMSMultiField:
|
|
"""Indexed collection (cells, temperature sensors)"""
|
|
|
|
help: str
|
|
label: str
|
|
raw_values: dict
|
|
values: dict
|
|
units: str | None = None
|
|
|
|
def get(self, key, default=None):
|
|
return getattr(self, key, default)
|
|
|
|
|
|
@dataclass
|
|
class BMSInfoField:
|
|
"""Text / date info (non-numeric)"""
|
|
|
|
help: str
|
|
info: str
|
|
|
|
def get(self, key, default=None):
|
|
return getattr(self, key, default)
|