APC PowerChute Serial Shutdown for Business の Web インターフェースから UPS ステータスを取得する Python スクリプトです。コマンドライン出力のほか、JSON、MQTT(Home Assistant)、Zabbix トラッパー連携に対応しています。
https://github.com/yo1t/apcget
外部パッケージ不要 — Python 標準ライブラリのみで動作します。
zabbix_sender — --zabbix-send オプション使用時のみ必要mosquitto_pub または paho-mqtt — --mqtt-send オプション使用時のみ必要(いずれか一方)# zabbix_sender
sudo dnf install zabbix-sender # RHEL / Amazon Linux
sudo apt install zabbix-sender # Ubuntu / Debian
brew install zabbix # macOS (Homebrew)
# mosquitto_pub(mosquitto_pub か paho-mqtt のいずれかをインストール)
sudo dnf install mosquitto # RHEL / Amazon Linux
sudo apt install mosquitto-clients # Ubuntu / Debian
brew install mosquitto # macOS (Homebrew)
# paho-mqtt(mosquitto_pub の代替)
pip3 install paho-mqtt
python3 apcget.py [IPアドレス] [ユーザ名] [パスワード] [オプション]
認証情報は環境変数や設定ファイルでも指定できます(後述)。
ユーザ名とパスワードは PowerChute で設定した認証情報です(OS のユーザではありません)。
python3 apcget.py 192.168.1.100 your_username your_password
# 出力: 19.0
# バッテリー充電率
python3 apcget.py 192.168.1.100 your_username your_password --battery
# 複数項目(スペース区切りで出力)
python3 apcget.py 192.168.1.100 your_username your_password --load --runtime --voltage
# 出力: 19.0 29 102.0
| オプション | 説明 | 出力例 |
|---|---|---|
--status |
デバイスステータス | オンライン |
--load |
UPS負荷 (%) | 19.0 |
--runtime |
ランタイム残り時間 (分) | 29 |
--voltage |
入力電圧 (VAC) | 102.0 |
--battery |
バッテリー充電 (%) | 100.0 |
--batteryvoltage |
バッテリー電圧 (VDC) | 13.7 |
オプション未指定の場合は --load がデフォルトです。単位(%、VAC 等)は出力に含まれません。
--json オプションで全項目を JSON 形式で出力します。Home Assistant やスクリプトとの連携に便利です。
python3 apcget.py 192.168.1.100 your_username your_password --json
# 出力: {"status": "オンライン", "load": "19.0", "runtime": "29", "voltage": "102.0", "battery": "100.0", "batteryvoltage": "13.7"}
--mqtt-send オプションで全項目を JSON 形式で MQTT ブローカーに送信します。mosquitto_pub または paho-mqtt のいずれかが必要です。mosquitto_pub が利用可能な場合は優先的に使用し、なければ paho-mqtt にフォールバックします。
python3 apcget.py 192.168.1.100 your_username your_password \
--mqtt-send 192.168.1.200 \
--mqtt-topic apcget/my-ups # トピック名は任意の文字列を指定可能
| オプション | 説明 | デフォルト |
|---|---|---|
--mqtt-send |
MQTT ブローカーのアドレス | (なし) |
--mqtt-topic |
MQTT トピック(例: apcget/ups-living, apcget/ups-office) |
apcget/ups |
--mqtt-port |
MQTT ブローカーのポート | 1883 |
--mqtt-user |
MQTT 認証ユーザ名 | (なし) |
--mqtt-password |
MQTT 認証パスワード | (なし) |
configuration.yaml に MQTT センサーを追加(トピック名は上記で指定したものに合わせてください):
mqtt:
sensor:
- name: "UPS負荷"
state_topic: "apcget/my-ups" # --mqtt-topic で指定した値に合わせる
value_template: ""
unit_of_measurement: "%"
- name: "UPSバッテリー"
state_topic: "apcget/my-ups"
value_template: ""
unit_of_measurement: "%"
- name: "UPSランタイム"
state_topic: "apcget/my-ups"
value_template: ""
unit_of_measurement: "min"
- name: "UPSステータス"
state_topic: "apcget/my-ups"
value_template: ""
- name: "UPS入力電圧"
state_topic: "apcget/my-ups"
value_template: ""
unit_of_measurement: "VAC"
- name: "UPSバッテリー電圧"
state_topic: "apcget/my-ups"
value_template: ""
unit_of_measurement: "VDC"
--zabbix-send オプションで全 6 項目を zabbix_sender で一括送信します。
python3 apcget.py 192.168.1.100 your_username your_password \
--zabbix-send 10.0.0.1 \
--zabbix-host MyUPS
| オプション | 説明 | デフォルト |
|---|---|---|
--zabbix-send |
Zabbix サーバーのアドレス | (なし) |
--zabbix-host |
Zabbix 上のホスト名 | IP アドレス |
--zabbix-port |
Zabbix サーバーのポート | 10051 |
対象ホストに以下の Zabbix トラッパー アイテムを作成してください:
| キー | タイプ | 説明 |
|---|---|---|
apc.status |
文字列 | デバイスステータス |
apc.load |
数値(浮動小数) | UPS負荷 |
apc.runtime |
数値(整数) | ランタイム残り時間 |
apc.voltage |
数値(浮動小数) | 入力電圧 |
apc.battery |
数値(浮動小数) | バッテリー充電 |
apc.batteryvoltage |
数値(浮動小数) | バッテリー電圧 |
* * * * * /usr/bin/python3 /path/to/apcget.py --config /path/to/.apcget.conf --zabbix-send 127.0.0.1 --zabbix-host ups-host >/dev/null 2>&1
認証情報は以下の優先順で解決されます。パスワードをコマンドラインに含めずに実行できます:
優先順位: コマンドライン引数 > 環境変数 > 設定ファイル
~/.apcget.conf)[powerchute]
ip = 192.168.1.100
username = your_username
password = your_password
# 設定ファイルのみで実行(引数不要)
python3 apcget.py
# 設定ファイルのパスを指定
python3 apcget.py --config /etc/apcget.conf
ファイルのパーミッションをオーナーのみ読み取り可能に設定してください:
chmod 600 ~/.apcget.conf
| 変数名 | 説明 |
|---|---|
APCGET_IP |
PowerChute の IP アドレス |
APCGET_USERNAME |
ログインユーザ名 |
APCGET_PASSWORD |
ログインパスワード |
export APCGET_IP=192.168.1.100
export APCGET_USERNAME=your_username
export APCGET_PASSWORD='your_password'
python3 apcget.py
ps やシェル履歴に表示されます。設定ファイルまたは環境変数を使用してくださいmosquitto_pub 使用時に --mqtt-password のパスワードがプロセス一覧(ps aux)に露出します。paho-mqtt をインストールすることでこの問題を回避できますchmod 600 を設定し、他のユーザーからの読み取りを防止してください本ソフトウェアは「現状のまま」提供され、いかなる保証もありません。使用は自己責任でお願いします。本ソフトウェアの使用により生じた損害、データ損失、その他の問題について、作者は一切の責任を負いません。本ツールは Schneider Electric および APC とは無関係であり、公式に認定されたものではありません。