เหตุการณ์ขึ้นอยู่กับระดับการชาร์จแบตเตอรี่


11

ฉันยังไม่พบอะไรเลยฉันหวังว่าจะมีใครบางคนที่นี่มีความคิด

ฉันต้องการที่จะเริ่มใช้แบตเตอรี่โดยใช้แล็ปท็อปของ Apple ถึงระดับประจุหรือเมื่อชาร์จแบตเตอรี่จนเต็ม

ฉันรู้ว่าฉันสามารถมีบางสิ่งบางอย่างทำงานเป็นระยะตรวจสอบระดับแบตเตอรี่และตัดสินใจว่าจะทำอย่างไร แต่ฉันชอบกิจกรรมที่ขับเคลื่อนถ้าเป็นไปได้

คำตอบ:


5

Power Managerไม่ฟรี แต่รองรับการเรียกใช้เหตุการณ์ตามระดับแบตเตอรี่ (ภายในหรือ UPS) เหตุการณ์สามารถเรียกใช้สคริปต์เรียกใช้แอปพลิเคชันหรือทำงานต่าง ๆ เช่นปิดเครื่อง

Power Manager เป็นตัวขับเคลื่อนเหตุการณ์และไม่ได้สำรวจการเปลี่ยนแปลงของแบตเตอรี่

แต่ Power Manager เชื่อมต่อกับเลเยอร์ IOKit ของ OS X และรอการอัปเดตจากฮาร์ดแวร์ เหตุการณ์สามารถถูกเรียกใช้เมื่อไม่มีใครลงชื่อเข้าใช้; ไม่พึ่งพาผู้ใช้ที่ใช้งานอยู่

Power Manager - เรียกใช้สคริปต์ด้วยแบตเตอรี่ที่เหลืออยู่

งาน Schedule Assistant ในตัวจะมุ่งเน้นไปที่การทำงานเมื่อแบตเตอรี่ลดลงถึงระดับหนึ่ง แต่สามารถปรับแต่งเพื่อตรวจสอบการเพิ่มขึ้นของเปอร์เซ็นต์แบตเตอรี่หรือเวลาที่เหลืออยู่

โพสต์ทั้งสองนี้พูดถึงแหล่งพลังงานของ UPS แต่ปรับได้ง่ายสำหรับแบตเตอรี่ภายในของ MacBook:

การเปิดเผยข้อมูล: ฉันเป็นวิศวกรซอฟต์แวร์ที่อยู่เบื้องหลัง Power Manager


3

ฉันต้องการให้มันเป็นระบบปฏิบัติการดังนั้นฉันไม่จำเป็นต้องมีการเชื่อมต่ออินเทอร์เน็ตหรือเปิดเบราว์เซอร์เป็นต้นสิ่งที่เกิดขึ้นในพื้นหลัง

วิธีที่ง่ายที่สุดที่จะทำคือใช้แอปพลิเคชั่น แต่นี่คือวิธีการที่ทำได้โดยใช้คำสั่งระบบปฏิบัติการในตัวเท่านั้น ฉันรู้ว่าคุณต้องการให้เป็นไปตามเหตุการณ์ แต่ฉันไม่แน่ใจว่าจะทำอย่างไรดังนั้นนี่คือวิธีหนึ่งในการตรวจสอบระดับแบตเตอรี่

คุณอาจพิจารณาlaunchdกระบวนการนี้เป็นงานตามกำหนดเวลาที่ทำงานทุกxนาที ผู้ใช้ขั้นสูงมักใช้งานบ่อย แต่ไม่ยากเกินกว่าจะตั้งค่าได้ คุณกำหนดค่างานที่กำหนดเวลา launchd ด้วยไฟล์. plist ที่คุณใส่ไว้ในไดเรกทอรีนี้: Macintosh HD\Library\LaunchDaemonsและนี่คือวิธีที่คุณจัดโครงสร้างไฟล์. plist

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Debug</key>
<true/>
<key>ExitTimeOut</key>
<integer>120</integer>
<key>Label</key>
<string>com.me.BatteryInfo</string>
<key>ProgramArguments</key>
<array>
    <string>/Users/yourusername/batt.sh</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>StartInterval</key>
<integer>1800</integer>
</dict>
</plist>

หากคุณต้องบันทึกไฟล์นั้นcom.me.BatteryInfoในLaunchDaemonsโฟลเดอร์ที่กล่าวถึงข้างต้นมันจะสร้างงานที่กำหนดเวลาไว้ซึ่งจะรันทุก 30 นาที หมายเลข,, 1800โดยตรงข้างต้น</dict>คือเวลาในหน่วยวินาทีของความถี่ที่คุณต้องการให้งานรัน ที่กล่าวว่า<string>/Users/yourusername/batt.sh</string>เป็นที่ที่คุณระบุสคริปต์ที่ทำงานตามกำหนดเวลา คุณต้องออกไป<string>และ</sting>ไม่บุบสลาย

บรรทัด<string>com.me.BatteryInfo</string>คือชื่อเฉพาะของภารกิจที่กำหนดเวลาไว้ หากคุณกำลังจะทำมากกว่าหนึ่งรายการโปรดตรวจสอบให้แน่ใจว่าแต่ละรายการมีชื่อเฉพาะที่นี่

สิ่งต่อไปที่คุณต้องทำคือการเปลี่ยนความเป็นเจ้าของของ .plist rootเพื่อ จำเป็นต้องใช้คุณลักษณะความปลอดภัย (เพื่อหยุดซอฟต์แวร์ / ผู้ใช้ที่สร้างงานที่เป็นอันตรายตามกำหนดเวลาฉันถือว่า) ในการเปลี่ยนความเป็นเจ้าของไฟล์ให้ทำsudo chown root \Library\LaunchDaemons\yourtask.plist(แทนที่ yourtask.plist ด้วยชื่อไฟล์จริงของ. plist ที่คุณสร้าง) งานนี้จะขอให้คุณใส่รหัสผ่าน

ตอนนี้คุณต้องสร้างสคริปต์ที่จะรันเป็นระยะ คุณต้องสร้างไฟล์. sh (สคริปต์ทุบตี) เพื่อบอกคอมพิวเตอร์ว่าจะต้องทำอย่างไร การทำไฟล์ .sh ให้เปิดขึ้นเป็นบรรณาธิการโปรแกรมเมอร์ข้อความเช่นSublime ข้อความหรือKomodo แก้ไข อย่าใช้การแก้ไขข้อความเพราะมักจะเพิ่มข้อความในไฟล์ของคุณซึ่งจะรบกวนการทำงานของสคริปต์ของคุณ การแก้ไขข้อความไม่ควรใช้กับรหัสจริงๆ

สร้างสคริปต์ (ไฟล์. sh) ด้วยรหัสต่อไปนี้

#!/bin/sh

percent=$(ioreg -l | awk '$3~/Capacity/{c[$3]=$5}END{OFMT="%.3f";max=c["\"MaxCapacity\""];print(max>0?100*c["\"CurrentCapacity\""]/max:"?")}')

if [ $percent > 95 ]
    then
        echo 'charged.'
fi
exit 0

แทนที่echo 'charged.'ด้วยคำสั่งเทอร์มินัลที่คุณต้องการเรียกใช้เมื่อชาร์จแบตเตอรี่ open /Applications/Notes.appจะเปิดแอปพลิเคชัน Notes; คุณสามารถเปลี่ยนไดเรกทอรีเพื่อเปิดแอปพลิเคชันอื่น

$percent > 95สิ่งนี้บอกให้บรรทัดถัดไปทำงานเมื่อแบตเตอรี่มี95ประจุมากกว่าเท่านั้น คุณสามารถเปลี่ยนสิ่งนี้เป็นสิ่งที่คุณต้องการ ระดับแบตเตอรี่ที่นี่มักจะแตกต่างจากที่แสดงในแถบเมนูด้านบนเล็กน้อย หากคุณต้องการที่จะวิ่งเมื่อแบตเตอรี่ชาร์จเต็ม 'ผมขอแนะนำให้ออกจากนี้เช่น> 95 หากคุณต้องการให้งานทำงานเมื่อแบตเตอรี่ของคุณต่ำกว่า 20% ให้เปลี่ยนเป็น$percent < 20

หมายเหตุ: เนื่องจากนี่เป็นงานที่กำหนดเวลาไว้สคริปต์ของคุณจะทำงานทุก ๆxนาที ซึ่งหมายความว่าถ้าคุณใส่open \Applications\Notes.appในสคริปต์ของคุณแอปพลิเคชัน Notes จะเริ่มทุกxนาที (หากแบตเตอรี่ของคุณมีการชาร์จ)

งานนี้จะทำงานแม้ว่าจะไม่มีใครลงชื่อเข้าใช้

ฉันรู้ว่าคุณเคยถามคำถามนี้มานานแล้ว แต่หวังว่านี่จะช่วยใครซักคน


2

นี่ไม่ใช่เฉพาะ Mac แต่ Mozilla Aurora มี API ในตัวที่มีฟังก์ชั่นที่เกี่ยวข้องกับแบตเตอรี่หลากหลาย หนึ่งสามารถตรวจสอบสถานะของแบตเตอรี่ (ไม่ว่าจะเป็นการชาร์จหรือไม่) เวลาเท่าไหร่ที่จะใช้แบตเตอรี่เพื่อจำหน่าย / ชาร์จและระดับ มีตัวอย่างง่ายๆของวิธีเพิ่ม EventListener เพื่อเรียกใช้ฟังก์ชันเมื่อระดับแบตเตอรี่อยู่ในระดับที่แน่นอน


ฉันต้องการให้มันเป็นระบบปฏิบัติการดังนั้นฉันไม่จำเป็นต้องมีการเชื่อมต่ออินเทอร์เน็ตหรือเปิดเบราว์เซอร์เป็นต้นสิ่งที่สามารถเกิดขึ้นในพื้นหลัง
FaultyJuggler
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.