LoginSignup
7
9

More than 5 years have passed since last update.

macbookの充電量が少なくなったらLINEで通知が来るようにした

Posted at

はじめに

タイトルの通りですが,macbookの充電量が少なくなったらLINEで通知が来るようにしました.
(macbook開きっぱなしで充電切れることが多々あったので...)
これでmacbookの充放電回数を減らしてバッテリー寿命を少しでも長くしたい!!

本題

今回はpythonを使用しています.手順としては...

  1. ioregコマンドでmacbookの現在の充電量を取得
  2. LINE Notifyで通知
  3. 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を利用しました.
プログラム作成に当たって以下の投稿を参考にしました.

  1. Pythonでsubprocessを使ってコマンドを実行する方法
  2. Battery status script for Mac OS X

LINEへの通知はLINE Notifyを利用しました.
設定やらトークン取得やら使い方やらは以下の投稿を参考にしました.

  1. [超簡単]LINE notify を使ってみる
  2. Pythonの実行終了をLINEで通知する

今回はバッテリーの残りが20%以下になったら通知が来るようにしました.ついでに充電量が90%以上でも通知が来るようにしました.(満充電はリチウム系バッテリーを痛めるらしい)
この辺は自由に変更してください.

最後は上記のプログラムをcronで定期実行します.cronについては以下の投稿が参考になるかと思います.自分は5分ごとに実行されるよう設定しました.

  1. 初心者向けcronの使い方
  2. cron guru

以上です!!

おわりに

これでバッテリーを長く保つことができるはず.
後は通知に気付けるかどうか...

何か詰まったことがあれば,教えてくださいm(_ _)m

7
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
9