Skip to main content
Measure power consumption from watt meter nets.

Import

from lager import Net, NetType

Methods

MethodDescription
read()Read power in watts

Method Reference

Net.get(name, type=NetType.WattMeter)

Get a watt meter net by name.
from lager import Net, NetType

power = Net.get('POWER_METER', type=NetType.WattMeter)
Parameters:
ParameterTypeDescription
namestrName of the watt meter net
typeNetTypeMust be NetType.WattMeter
Returns: Watt meter Net instance

read()

Read the current power consumption.
watts = power.read()
print(f"Power: {watts}W")
Returns: float - Power in watts

Examples

Basic Power Reading

from lager import Net, NetType

power = Net.get('DEVICE_POWER', type=NetType.WattMeter)

watts = power.read()
print(f"Power consumption: {watts:.3f}W")

Power Profiling

from lager import Net, NetType
import time

power = Net.get('DEVICE_POWER', type=NetType.WattMeter)

measurements = []

# Take 60 seconds of measurements
for i in range(60):
    watts = power.read()
    measurements.append(watts)
    print(f"[{i:3d}s] {watts:.3f}W")
    time.sleep(1)

# Statistics
avg = sum(measurements) / len(measurements)
max_p = max(measurements)
min_p = min(measurements)

print(f"\nAverage: {avg:.3f}W")
print(f"Maximum: {max_p:.3f}W")
print(f"Minimum: {min_p:.3f}W")

Battery Life Estimation

from lager import Net, NetType
import time

power = Net.get('POWER', type=NetType.WattMeter)

# Average over multiple readings
readings = []
for _ in range(10):
    readings.append(power.read())
    time.sleep(0.1)

avg_power = sum(readings) / len(readings)

# Estimate battery life (1000mAh @ 3.7V = 3.7Wh)
battery_wh = 3.7
hours = battery_wh / avg_power if avg_power > 0 else float('inf')

print(f"Average power: {avg_power:.3f}W")
print(f"Est. battery life: {hours:.1f} hours")

Power Limit Verification

from lager import Net, NetType
import time

def verify_power_limits(min_watts, max_watts):
    power = Net.get('DEVICE_POWER', type=NetType.WattMeter)

    # Average multiple readings
    readings = []
    for _ in range(10):
        readings.append(power.read())
        time.sleep(0.1)

    avg = sum(readings) / len(readings)

    if min_watts <= avg <= max_watts:
        print(f"PASS: {avg:.3f}W in range [{min_watts}, {max_watts}]")
        return True
    else:
        print(f"FAIL: {avg:.3f}W outside range [{min_watts}, {max_watts}]")
        return False

# Test
verify_power_limits(0.1, 5.0)

Sleep Current Verification

from lager import Net, NetType
import time

power = Net.get('DEVICE_POWER', type=NetType.WattMeter)

# Put device in sleep mode (external trigger)
# set_device_sleep_mode()
time.sleep(2)  # Wait for stabilization

sleep_power = power.read()

# Convert to current at 3.3V
sleep_current_ua = (sleep_power / 3.3) * 1e6

print(f"Sleep power: {sleep_power:.6f}W")
print(f"Sleep current: {sleep_current_ua:.1f}uA")

if sleep_current_ua < 100:
    print("PASS: Sleep current below 100uA")
else:
    print("FAIL: Sleep current exceeds limit")

Supported Hardware

ManufacturerModelFeatures
YoctoWatt modulesReal-time power measurement

Notes

  • Power is returned in watts (W)
  • For current: I = P / V
  • Use multiple readings and averaging for stability
  • Allow settling time after device state changes