SMA-2 round 2: census keeps ACTUATOR_WRITE_KEYS, setters, NaN/inf port refused, tests
Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude
parent
e56eeef8f0
commit
0b20f53cf8
@@ -366,6 +366,31 @@ class Inverter:
|
||||
def batt_invert(self) -> bool:
|
||||
return bool(getattr(self.driver, "batt_invert", False))
|
||||
|
||||
# Assigning one writes through to the driver, as the attributes did before
|
||||
# SMA-2 (nothing in the repo assigns them today; this keeps it working).
|
||||
# A driver that has no such field refuses, rather than losing the value.
|
||||
def _set_driver_field(self, name, value):
|
||||
if not hasattr(self.driver, name):
|
||||
raise AttributeError(
|
||||
f"{type(self.driver).__name__} has no {name}")
|
||||
setattr(self.driver, name, value)
|
||||
|
||||
@setpoint_entity.setter
|
||||
def setpoint_entity(self, v):
|
||||
self._set_driver_field("setpoint_entity", str(v or ""))
|
||||
|
||||
@soc_entity.setter
|
||||
def soc_entity(self, v):
|
||||
self._set_driver_field("soc_entity", str(v or ""))
|
||||
|
||||
@batt_entity.setter
|
||||
def batt_entity(self, v):
|
||||
self._set_driver_field("batt_entity", str(v or ""))
|
||||
|
||||
@batt_invert.setter
|
||||
def batt_invert(self, v):
|
||||
self._set_driver_field("batt_invert", bool(v))
|
||||
|
||||
# -- store ---------------------------------------------------------------
|
||||
def key(self, name: str) -> str:
|
||||
"""This unit's namespaced Store key for `name`. See store.unit_key()."""
|
||||
|
||||
Reference in New Issue
Block a user