|
|
@@ -1,6 +1,7 @@
|
|
|
import logging
|
|
|
from dataclasses import dataclass
|
|
|
from datetime import datetime
|
|
|
+from src.services.prometheus_service import cell_voltage, cell_current, cell_temperature, cell_health
|
|
|
|
|
|
logger = logging.getLogger(__name__)
|
|
|
|
|
|
@@ -31,7 +32,7 @@ class Cell():
|
|
|
|
|
|
def add_measurement(self, data: MeasureValues):
|
|
|
"""
|
|
|
- Add a new measurement to the list of measurements.
|
|
|
+ Add a new measurement to the list of measurements and update Prometheus metrics.
|
|
|
"""
|
|
|
now = datetime.now()
|
|
|
if self.last_measured_time is not None:
|
|
|
@@ -39,6 +40,15 @@ class Cell():
|
|
|
self.measurements_duration.append(duration)
|
|
|
self.measurements.append(data)
|
|
|
logger.debug(f"Added measurement for cell {self.id}: {data} ({duration:.1f}s)")
|
|
|
+
|
|
|
+ # Update Prometheus metrics
|
|
|
+ cell_id = str(self.id)
|
|
|
+ cell_voltage.labels(cell_id=cell_id).set(data.voltage)
|
|
|
+ cell_current.labels(cell_id=cell_id).set(data.current)
|
|
|
+ cell_temperature.labels(cell_id=cell_id).set(data.temperature)
|
|
|
+ if self.estimated_health >= 0:
|
|
|
+ cell_health.labels(cell_id=cell_id).set(self.estimated_health)
|
|
|
+
|
|
|
self.last_measured_time = datetime.now()
|
|
|
|
|
|
def _find_cycles(self) -> list[tuple[int, float]]:
|