Extract out classes that should be common to all UPS models
This commit is contained in:
@@ -0,0 +1,39 @@
|
|||||||
|
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)
|
||||||
+1
-37
@@ -8,43 +8,7 @@ import serial.rs485
|
|||||||
import time
|
import time
|
||||||
from dataclasses import dataclass, fields as dataclass_fields
|
from dataclasses import dataclass, fields as dataclass_fields
|
||||||
|
|
||||||
|
from bmspy.classes import BMSScalarField, BMSMultiField, BMSInfoField
|
||||||
@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)
|
|
||||||
|
|
||||||
|
|
||||||
@dataclass
|
@dataclass
|
||||||
|
|||||||
Reference in New Issue
Block a user