apcupsd
で取得できるUPS情報をPythonのオブジェクトとして扱う方法を探したところ、apcaccess
ライブラリを見つけました。
試してみた時のメモを残します。
環境
- Windows10 x64
- Python 3.5.1 32bit
- apcaccess 0.0.4
実装
PyPIやGitHubにはドキュメントがないため、テストコードやソースコードを見たところ、
apcaccess.status.get()
で、UPSの情報を取得- 引数
host
にIPアドレスなどを与えれば、リモートのapcupsdの情報も取得可能
- 引数
apcaccess.status.parse()
で、PythonのOrderedDictへ変換apcaccess.status.print_status()
で、読みやすい形でprintする
ということが分かりました。
usage_apcaccess.py
from apcaccess.status import get, print_status, parse def main(host="localhost"): # apcupsdよりデータ取得 raw = get(host=host) # rawデータだと文字化け print(raw) print("-"*10) # OrderedDictへparse parsed = parse(raw) print(parsed) # 読みやすい形でprint print_status(raw) print("-"*10) if __name__ == "__main__": # ローカルホスト # main() # リモートホスト main(host="192.168.0.10")
結果
>python usage_apcaccess.py # print(raw) APC : xxx,xxx,xxxx 'DATE : 2016-06-29 HOSTNAME : your host )VERSION : 3.14.12 (29 March 2014) Win32 UPSNAME : UPS_IDEN CABLE : Custom Cable Smart DRIVER : APC Smart UPS (any) UPSMODE : Stand Alone ... # print(parse(raw)) OrderedDict([('APC', 'xxx,xxx,xxxx'), ('DATE', '2016-06-29'), ('HOSTNAME', 'your host'), ('VERSION', '3.14.12 (29 March 2014) Win32'), ('UPSNAME', 'UPS_IDEN'), ('CABLE', 'Custom Cable Smart'), ('DRIVER', 'APC Smart UPS (any)'), ('UPSMODE', 'Stand Alone'), ...]) # print_status(raw) APC : xxx,xxx,xxxx DATE : 2016-06-29 HOSTNAME : your host VERSION : 3.14.12 (29 March 2014) Win32 UPSNAME : UPS_IDEN CABLE : Custom Cable Smart DRIVER : APC Smart UPS (any) UPSMODE : Stand Alone
なかなか良さそうです。
ソースコード
GitHubに上げました。usage_apcaccess.py
が今回のスクリプトファイルです。
thinkAmi-sandbox/apcupsd_python-sample