Nokia N900 >> Native Debian >> Kernel 5.3.0

自製電池顯示


由於司徒替換大容量電池後,發現電池的顯示百分比不準確,司徒嘗試修改UPower以及xfce4-battery-monitor都無法修復,因此最終只好寫個Python做顯示(記得把UPower移除),使用的量測方式爲電壓方式,公式很簡單,只要把充滿電(4.2V)和終止電(3.2V)做百分比顯示即可,最後透過Generic Monitor輸出,步驟如下:


加入Generic Monitor


調整位置


參數


完成


battery.py

#!/usr/bin/python
import os
import sys

f = open('/sys/devices/platform/68000000.ocp/48072000.i2c/i2c-2/2-0055/power_supply/bq27200-0/voltage_now')
volt = int(f.read().replace('\r', '').replace('\n', ''))
f.close()

f = open('/sys/devices/platform/68000000.ocp/48072000.i2c/i2c-2/2-0055/power_supply/bq27200-0/current_now')
curr = int(f.read().replace('\r', '').replace('\n', ''))
f.close()

volt = volt / 1000
curr = curr / 1000
curr = curr * -1
per = 100 - ((4200 - volt) / 10)
print '{}% ({}mV, {}mA)'.format(per, volt, curr)

經過測試,bq27xxx_battery驅動無法準確偵測自製電池且會讓系統自動關機(大約在3500mV),因此,司徒在rc.local啟動時,卸載bq27xxx_battery以及bq27xxx_battery_i2c,然後把上面的Python改成如下:

#!/usr/bin/python
import os
import sys
import commands

volt = commands.getoutput('/usr/sbin/i2cget -y 2 0x55 0x08 w')
volt = volt.replace('\r', '').replace('\n', '')
volt = int(volt, 16)

ip = None
try:
  r = commands.getoutput('ip -o addr show up primary scope global')
  ip = r.split('inet')[1].split('/')[0].replace(' ', '')
except:
  ip = 'ERR'

print '({}, {}mV)'.format(ip, volt)

完成

P.S. 記得安裝i2c-tools並且修改i2cget以及/dev/i2c*的權限。


返回上一頁