"Linux-deploy app 保持喚醒":充電時(shí)能,不充電時(shí)不能。
????????最近,up主的老員工小米5s在退休生涯中不甘寂寞,想要重拾007的福報(bào)生活,強(qiáng)烈要求再次投入工作,然而她的電池已經(jīng)不再堅(jiān)挺,當(dāng)電量降至30%的時(shí)候,分分鐘有暴斃的風(fēng)險(xiǎn),如果想要穩(wěn)定的投入007的生活,就必須插著電源才行。up主表示:老員工啊,你應(yīng)該享受你的退休生活,雖然插電狀態(tài)你也能干,但是萬(wàn)一炸了呢,來(lái),我這里有個(gè)測(cè)試,如果你能通過(guò)這個(gè)測(cè)試,那么我就同意你的工作請(qǐng)求。
????????介紹完背景(水完字?jǐn)?shù)),下面進(jìn)入正文。up主需要一臺(tái)不間斷工作的linux設(shè)備,由于窮,只能打起退休的老員工(小米5s)的主意,但是電池?fù)p耗嚴(yán)重,長(zhǎng)時(shí)間插電工作又有安全隱患。所以u(píng)p主想到了2個(gè)方案,第一個(gè)方案是手機(jī)一直連接充電器,通過(guò)ADB命令,讓手機(jī)定時(shí)接受充電;第二個(gè)方案則是通過(guò)小米智能插座,由手機(jī)自己判斷電量狀態(tài),定時(shí)去開(kāi)啟智能插座給自己充電。
????????沒(méi)有意外的,最省錢(qián)的方案往往都是失敗的,第二個(gè)方案成功了。下面詳細(xì)介紹一下第二個(gè)方案。
????????第0步:小米5s通過(guò)安裝magisk獲取root權(quán)限,安裝llinux-deploy,掛載SD卡,使用bindfs映射修改SD卡的權(quán)限,編譯安裝python,用類似'echo service.adb.tcp.port=5555 >> /system/build.prop'的命令永久開(kāi)啟小米5s的無(wú)線adb調(diào)試,安裝米家app,將小米智能插座的組件放到桌面。以上寫(xiě)著簡(jiǎn)單,但每一步其實(shí)都挺麻煩的。
????????第1步:linux-deploy設(shè)置保持CPU喚醒,編寫(xiě)python腳本,每1分鐘檢測(cè)一下手機(jī)電量和充電狀態(tài),電量低于等于50時(shí)開(kāi)啟小米智能插座,電量大于等于95時(shí)關(guān)閉,用日志自動(dòng)記錄時(shí)間、電量和充電狀態(tài)。測(cè)試過(guò)程中除了開(kāi)關(guān)充電的過(guò)程,其余時(shí)間屏幕保持息屏狀態(tài)。
????????第2步:分析日志,可視化。

????????從2023/6/9 22:49到2023/6/14 9:52共記錄了762組數(shù)據(jù),然而按腳本預(yù)設(shè)1分鐘一次來(lái)計(jì)算,理論上4天11小時(shí)3分鐘的時(shí)長(zhǎng),應(yīng)該有6423組數(shù)據(jù),明顯可以看出linux-deploy并不是一直保持喚醒狀態(tài)的。


????????進(jìn)一步的分析可以看出,在充電過(guò)程中,平均1分鐘檢測(cè)一次電量,而在未充電狀態(tài),平均12分鐘檢測(cè)一次電量,間隔最常的時(shí)間為17分49秒。
????????結(jié)論:第一,小米5s在僅僅運(yùn)行電量檢測(cè)腳本的情況下,50%~95%這個(gè)電量區(qū)間基本可以運(yùn)行22小時(shí),加上充電時(shí)長(zhǎng),基本可以做到一天一充,屬于可用狀態(tài)。第二,小米5s在不充電、息屏的狀態(tài)下,盡管開(kāi)啟了保持CPU喚醒,但是仍會(huì)進(jìn)行休眠,這個(gè)就對(duì)正常工作的影響巨大,因?yàn)榛驹趌inux-deploy運(yùn)行的腳本都是要長(zhǎng)時(shí)間實(shí)時(shí)運(yùn)行的,一睡就睡12分鐘的員工有待調(diào)教,如何保持linux-deploy息屏實(shí)時(shí)運(yùn)行有待進(jìn)一步的測(cè)試。