この記事はメインブログから移行する際に消そうと思ったけれど、まだ需要があるかもしれないので残しておくことにした。
目次
やりたいこと
いつのまにかNASNEのHDD容量がなくっていて録画できていないことがあったので、
なんかいい感じにHDD残容量チェックしたい。
どうすればHDD残容量を取得できるか?
nasne API というのがあるらしい。
webブラウザでnasneのIPアドレスを指定するとnasne HOME が表示される。
このページでnasneの操作を行ったり、情報を取得したりしているのがnasne APIらしい。
で、HDDの情報を取得するにはURLに、
http://nasneのIPアドレス:64210/status/HDDInfoGet?id=0
と指定すればいいみたい。
idの部分は0が内蔵HDDで1が外付けHDDになる。
実際にたたくと結果がJSON形式で返ってくる。
{
"errorcode": 0,
"HDD": {
"id": 0,
"internalFlag": 0,
"mountStatus": 1,
"registerFlag": 1,
"format": "xfs",
"name": "hdd0",
"vendorID": "ATA",
"productID": "HGST HTS541010A9",
"serialNumber": "JDXXXXXXXXXXXX",
"usedVolumeSize": 840641601536,
"freeVolumeSize": 157732335616,
"totalVolumeSize": 998373937152
}
}
totalVolumeSizeが合計容量、freeVolumeSizeが空き容量、usedVolumeSizeが使用容量
あとはこれらをいい感じにまとめられればいけるはず。
とりあえずコードを書いてみる
Http通信をしたいのでrequests、JSONを扱いたいのでjsonをインポートする。
import requests
import json
msg = 'nesne info\n'
info = [["0", "内蔵HDD"], ["1", "外付けHDD"]]
for i in info:
get_url_info = requests.get(f'http://nasneのIPアドレス:64210/status/HDDInfoGet?id={i[0]}')
js = json.loads(get_url_info.text)
used_b = int(js['HDD']['usedVolumeSize'])
free_b = int(js['HDD']['freeVolumeSize'])
total_b = int(js['HDD']['totalVolumeSize'])
# K M G
used_g = used_b / 1024 / 1024 / 1024
free_g = free_b / 1024 / 1024 / 1024
total_g = total_b / 1024 / 1024 / 1024
used_g = round(used_g, 2)
free_g = round(free_g, 2)
total_g = round(total_g, 2)
used_percent = round(used_b / total_b * 100, 2)
free_percent = round(free_b / total_b * 100, 2)
msg += f'{i[1]}------\n'
msg += f'USED: {used_g}GB({used_percent}%)\n'
msg += f'FREE: {free_g}GB({free_percent}%)\n'
msg += f'TOTAL:{total_g}GB\n'
print(msg)
実行結果はこんな感じになった、
nesne info
内蔵HDD------
USED: 782.91GB(84.2%)
FREE: 146.9GB(15.8%)
TOTAL:929.81GB
外付けHDD------
USED: 1847.46GB(99.19%)
FREE: 15.1GB(0.81%)
TOTAL:1862.56GB
とりあえず容量を取得できた、
あとはこれを1日に1回実行できるようにするのと、
使用率n%を切ったら知らせる機能を追加したい。
コメント