长期运行准备 —— termux第二弹
之前讲过 如何安全的二次利用你的旧手机 , 前几天又说了实际遇到的情况。这会电池安全脚本给它部署上,再讲一下termux安装好后需要做的一些事情。
完善脚本
先上完整代码: https://github.com/Virace/Automatic-charging-of-MP
主要就是对于温度的检测。
....elif temperature >= TT * 10: # 44° 温度过高通知 if not os.path.exists(target): os.system(f'echo 1 > {target}') else: with open(target, 'r+') as f: count = int(f.read()) log.warning(f'temperature anomaly, count: {count + 1}') if count >= 5: f.seek(0) f.write('0') if ac is True: result = power.off() msg_push(f'目前温度异常,请及时检查。温度: {temperature / 10}°, 已操作开关: {result}') else: f.seek(0) f.write(str(count + 1))elif temperature <= 400 and os.path.exists(target): os.remove(target)TT是配置中设置的温度阈值,超过这个温度就会记录一次,连续5次将会断开电源,并且微信推送。因为这个脚本是准备在crontab中按时出发的,所以这个超温几次触发推送,是要根据设置的计划任务频率设置的。
其余的就是加上了推送,并没有太大比变化。
部署
这个脚本是跑在手机本身上的,所以要用adb连接自己来获取电池信息。需要在termux中先安装adb相关工具,但是遇到了问题。
ADB
没安装的时候输入adb会提示没找到该命令,并推荐你安装一个软件包”android-tools”,莫装!测试了,adb服务无法启动。
需要使用这个开源脚本方可安装: https://github.com/MasterDevX/Termux-ADB,安装脚本中默认使用GitHub直接下载,国内访问不太稳定,可以使用下面提供替换过CDN的脚本。
#!/data/data/com.termux/files/usr/bin/bash
directory="$(pwd)"echoecho -e "\e[93mThis script will install ADB & FastBoot Tools in Termux."echoecho -e "\e[32m[*] \e[34mDownloading wrapper script..."mkdir $PREFIX/tmp/adbtempdownpath="$PREFIX/tmp/adbtemp"wget https://cdn.jsdelivr.net/gh/MasterDevX/Termux-ADB@master/bin/adb -P $downpath/ -qecho -e "\e[32m[*] \e[34mDownloading binaries..."wget https://cdn.jsdelivr.net/gh/MasterDevX/Termux-ADB@master/bin/adb.bin -P $downpath/ -qwget https://cdn.jsdelivr.net/gh/MasterDevX/Termux-ADB@master/bin/fastboot -P $downpath/ -qwget https://cdn.jsdelivr.net/gh/MasterDevX/Termux-ADB@master/bin/fastboot-armeabi -P $downpath/ -qecho -e "\e[32m[*] \e[34mCopying files to bin..."cp $downpath/* $PREFIX/binecho -e "\e[32m[*] \e[34mSetting execution permissions..."files="$(ls $downpath)"cd $PREFIX/binchmod +x $filesecho -e "\e[32m[*] \e[34mCreating workspace directory..."cd $HOMEif [ ! -d "adbfiles" ]; then mkdir adbfilesfiecho -e "\e[32m[*] \e[34mCleaning up..."cd $directoryrm -rf $downpathrm -rf InstallTools.shechoecho -e "\e[32mTools were successfully installed!\e[39m"echo在开发者模式中开启adb调试,执行 adb devices 即可启动服务,并且可以看到下列字样。
~ $ adb devicesList of devices attachedemulator-5554 deviceemulator-5554这只是个名字,可能你看到的会不一样,无所谓。在脚本中将 config.py 变量 LOCAL_IP 更改为这个名字即可。
安装依赖
微信推送用到了bs4和requests,插座操作则用到了python-miio,安装这个包遇到了不少问题。其中 python-miio 自己本身依赖了一个软件包 cryptography 用来编码解码,但是安装频繁出错。
第一次遇到的报错是缺少rust而无法编译,所以直接apt install rust就可以了。
第二次遇到的报错如图,也就是说编译脚本中无法识别当前系统类型。

然后经过搜索,在GitHub中找到了答案: https://github.com/termux/termux-packages/issues/8037#issuecomment-975627474
~ $ rustc -vVrustc 1.57.0binary: rustccommit-hash: unknowncommit-date: unknownhost: aarch64-linux-androidrelease: 1.57.0LLVM version: 13.0.0~ $ export CARGO_BUILD_TARGET=aarch64-linux-android先 rustc -vV 查看其输出的host,然后设置环境变量。
第三次是因为网络问题,导致没办法GitHub上下载相关文件,这个就不提了是修改host还是挂什么东西,这个问题不便回答。
解决了这三个问题,依赖算是安装好了。
计划任务
crontab打算每两分钟执行一次。
crontab -e
*/2 * * * * python $HOME/auto_power/main.py这样就可以了,执行后可以在项目目录中查看 main.log 日志文件。

AC为充电器连接状态,CHARGE为剩余电量,STATE为充电状态,TP为电池温度。
其他方法
其实最近一直在测试上个文章提到的 ACC(Advanced Charging Controller),两部手机安装的都是魔趣安卓10版本,执行都不正常。
无论情景模式如何设置,永远是电量保持在90%无法调节,而且通过adb获取电池信息还是没有充电的状态,但是状态栏右上角电池又显示为充电状态,包括充电记录等信息全都不正确,原因未知,所以目前放弃此方法。
本来就像用这两种方法来处理,但是目前来看只能用我的”笨办法”了。
要是支持不使用电池充电器直连就好了,没找到相关操作~

辽公网安备21021302000353号