在知乎上找到了一篇有关电池过充电的文章https://www.zhihu.com/question/22382912/answer/21433077(作者:郑艳磊),文中提到
相对于铅蓄,锂电在性能上的最大的优点就是循环寿命长,即使全充全放,上千次也毫无压力。但缺点是对过充过放反应灵敏,一旦过充或过放,电池就发生不可逆的损坏。为了应对过充过放,所有的锂电都有复杂而严格的电源管理系统 (BMS, battery management system),该系统会严格控制进出电池的电量,从而保证电池一直在安全状态下工作。好的手机,电源管理系统非常精确,即使一直插在充电器上,也不会过充,即使过度使用,也不会过放。所以,随便使用就行,出门时没充满电,如果觉得出门不久不会自动关机就算了,否则你还是带个随身电源;晚上充到 90%,可以继续充。但为了安全,我建议你拔掉。如果锂电池电源管理系统不够好,那么,虽然过充和过放都会直接导致电池报废,但对于使用者而言,过充的影响更大,因为过放了,最多也就是电池寿命终止,但过充了,电池膨胀或者爆炸,这麻烦就大了。
实践证明了一下,连续充电大概 3 个多星期,手机就变成了这样
打开来看是这个样子
摸一摸,感觉电池里面都是液体。非常怕它流出来。
通常经常用的手机是不是过充的,因为经常拿起来用,肯定不会一直充电。
建设手机自动化测试集群的时候,经常会遇到。这是因为很多的测试框架 (Appium, Macaca, ChromeDriver etc ...) 都是基于 adb 的,手机连接上数据线的话,就可以获得一个稳定的 Adb 环境,但是一直插着数据线的话,就会出现过充的问题。
看社区里面有人发了一篇文章 一种 android 耗电量自动化测试方案, 这篇文章利用了小米智能插座,完成耗电的测试。
于是我就设想,是不是可以利用我过去写的自动化工具加上小米插座来防止手机集群过度充电的问题。
步骤大概是
平均每 5 分钟检查一次
小米的只能插座使用的是米家 App,这里用了一点 UI 自动化的代码,使用的是uiautomator2这个项目
# coding: utf-8
import uiautomator2 as u2
def switch(on=True):
u = u2.connect()#'10.242.43.103')
u.healthcheck()
u.app_start('com.xiaomi.smarthome')
u(resourceId='com.xiaomi.smarthome:id/tab_text', text='米家').click()
u(className="android.widget.RadioButton", index=0).click() # 同级别组件编号
print("checking switch")
poweron = u(resourceId="com.xiaomi.smarthome:id/name_status").info.get('text').strip() not in [u'已关闭', u'电源关']
if poweron is not on:
u(resourceId="com.xiaomi.smarthome:id/device_switch").click()
if __name__ == '__main__':
switch(True)
如果米家 APP 更新了,这个代码估计就不能用了,但还是贴上去,给读者一个参考吧。
不想拖延到下周了,匆匆的结帖了。如果以后有更好的方案我再更新。