mirror of
https://github.com/meshtastic/python.git
synced 2026-01-06 06:47:55 -05:00
53 lines
1.5 KiB
Python
53 lines
1.5 KiB
Python
"""code logging power consumption of meshtastic devices."""
|
|
|
|
import math
|
|
from datetime import datetime
|
|
|
|
|
|
class PowerError(Exception):
|
|
"""An exception class for powermon errors"""
|
|
|
|
def __init__(self, message):
|
|
self.message = message
|
|
super().__init__(self.message)
|
|
|
|
|
|
class PowerMeter:
|
|
"""Abstract class for power meters."""
|
|
|
|
def __init__(self):
|
|
"""Initialize the PowerMeter object."""
|
|
self.prevPowerTime = datetime.now()
|
|
|
|
def close(self) -> None:
|
|
"""Close the power meter."""
|
|
|
|
def get_average_current_mA(self) -> float:
|
|
"""Returns average current of last measurement in mA (since last call to this method)"""
|
|
return math.nan
|
|
|
|
def get_min_current_mA(self):
|
|
"""Returns max current in mA (since last call to this method)."""
|
|
# Subclasses must override for a better implementation
|
|
return self.get_average_current_mA()
|
|
|
|
def get_max_current_mA(self):
|
|
"""Returns max current in mA (since last call to this method)."""
|
|
# Subclasses must override for a better implementation
|
|
return self.get_average_current_mA()
|
|
|
|
def reset_measurements(self):
|
|
"""Reset current measurements."""
|
|
|
|
|
|
class PowerSupply(PowerMeter):
|
|
"""Abstract class for power supplies."""
|
|
|
|
def __init__(self):
|
|
"""Initialize the PowerSupply object."""
|
|
super().__init__()
|
|
self.v = 0.0
|
|
|
|
def powerOn(self):
|
|
"""Turn on the power supply (using the voltage set in self.v)."""
|