はじめに
タイトルの通りですが,macbookの充電量が少なくなったらLINEで通知が来るようにしました.
(macbook開きっぱなしで充電切れることが多々あったので...)
これでmacbookの充放電回数を減らしてバッテリー寿命を少しでも長くしたい!!
本題
今回はpythonを使用しています.手順としては...
- ioregコマンドでmacbookの現在の充電量を取得
- LINE Notifyで通知
- cronで定期実行
これだけです.
battery.py
from subprocess import Popen, PIPE
import requests
import sys
# バッテリー残量を取得するためのコマンド
cmd = "/usr/sbin/ioreg -r -k LegacyBatteryInfo"
output = Popen(cmd.split(), stdout=PIPE).communicate()[0]
output_str = str(output, encoding='utf-8')
battery_info = dict(
[ (kw.strip().strip('"'), vw.strip())
for kw, vw
in [ line.split("=", 1)
for line
in output_str.split('\n') if line.find('=')>0
]
]
)
# 現在の充電量 (mAh)
current_capa = int(battery_info["CurrentCapacity"])
# 最大充電量 (mAh)
max_capa = int(battery_info["MaxCapacity"])
# パーセント表示
charge_ratio = int((current_capa/max_capa) * 100)
# LINE Notifyのトークン
url = "https://notify-api.line.me/api/notify"
token = '??????????'
headers = {"Authorization" : "Bearer "+ token}
# バッテリー残高が90%以上および20%以下でLINEを送る
if charge_ratio >= 90:
message = 'High energy!!'
payload = {"message": message}
r = requests.post(url, headers=headers, params=payload)
elif charge_ratio <= 20:
message = 'Low energy...'
payload = {"message": message}
r = requests.post(url, headers=headers, params=payload)
解説
まずはioregコマンドでmacbookの充電量を取得します.
pythonでunixコマンドを入力するためにsubprocessを利用しました.
プログラム作成に当たって以下の投稿を参考にしました.
LINEへの通知はLINE Notifyを利用しました.
設定やらトークン取得やら使い方やらは以下の投稿を参考にしました.
今回はバッテリーの残りが20%以下になったら通知が来るようにしました.ついでに充電量が90%以上でも通知が来るようにしました.(満充電はリチウム系バッテリーを痛めるらしい)
この辺は自由に変更してください.
最後は上記のプログラムをcronで定期実行します.cronについては以下の投稿が参考になるかと思います.自分は5分ごとに実行されるよう設定しました.
以上です!!
おわりに
これでバッテリーを長く保つことができるはず.
後は通知に気付けるかどうか...
何か詰まったことがあれば,教えてくださいm(_ _)m