@ -38,7 +38,6 @@ if __name__ == '__main__':
voltage_average = ( 0 , 0 ) # average, count
current_average = ( 0 , 0 )
power_average = ( 0 , 0 )
power_total_average = ( 0 , 0 )
while sample_time is None or time . monotonic ( ) - start_time < sample_time :
with open ( " /sys/bus/i2c/devices/0-0040/hwmon/hwmon1/in1_input " ) as f :
voltage_total = int ( f . read ( ) ) / 1000.
@ -46,23 +45,23 @@ if __name__ == '__main__':
with open ( " /sys/bus/i2c/devices/0-0040/hwmon/hwmon1/curr1_input " ) as f :
current_total = int ( f . read ( ) )
with open ( " /sys/class/power_supply/bms/voltage_now " ) as f :
voltage = int ( f . read ( ) ) / 1e6 # volts
# SOM measurements are questionable
#with open("/sys/class/power_supply/bms/voltage_now") as f:
# voltage = int(f.read()) / 1e6 # volts
#with open("/sys/class/power_supply/bms/current_now") as f:
# current = int(f.read()) / 1e3 # ma
with open ( " /sys/class/power_supply/bms/current_now " ) as f :
current = int ( f . read ( ) ) / 1e3 # ma
power = voltage * current
power_total = voltage_total * current_total
# compute averages
voltage_average = average ( voltage_average , voltage )
current_average = average ( current_average , current )
power_average = average ( power_average , power )
power_total_average = average ( power_total_average , power_total )
voltage_average = average ( voltage_average , voltage_total )
current_average = average ( current_average , current_total )
power_average = average ( power_average , power_total )
print ( f " { power : 12.2f } mW { power_total : 12 .2f} mW { power_total - power : 12 .2f } mW " )
print ( f " now: { power_total : .2f } mW, avg: { power_average [ 0 ] : .2f } mW " )
time . sleep ( 0.25 )
except KeyboardInterrupt :
pass
finally :
stop_time = time . monotonic ( )
print ( " \n ----------------------Average----------------------------------- " )