Raritan PX3 APIからアウトレットを操作する



概要

APIからRaritan PX3のアウトレットを操作します。
HTTPリクエスト(JSON-RPC)を利用して、curlコマンドからAPIを呼び出してみます。

公式の資料が充実しているので参考に。

環境

  • Raritan PX3-5138JR 4.0.20.5-49038

アウトレットの状態を確認する

まずはアウトレットの状態の確認をしてみます。

リクエストを作ります。

  • データ部
    • JSON-RPCに沿って書きます。
    • idはリクエストとレスポンスを紐づけるだけなので何でも良いです。
  • URL部
    • それぞれ<>の箇所はご自身の環境に合わせて記入してください。
    • <pdu_id>
      • 使用するPDUのIDです。
      • 複数端末を束ねているときにIDを割り振るようですが、1台のみであれば0になります。
    • <outlet_id>
      • 確認したいアウトレットの番号です。
      • 0始まり(0~7)で指定します。
      • 例えば、本体シルクで1番のアウトレットを確認する場合は0となります。

リクエスト:

# Bash
curl -skd \
  '{
    "jsonrpc": "2.0",
    "method": "getState",
    "id": 0
  }' \
  https://<user_name>:<password>@<IP_address>/model/pdu/<pdu_id>/outlet/<outlet_id>
# PowerShell
curl.exe -skd `
  '{
    \"jsonrpc\": \"2.0\",
    \"method\": \"getState\",
    \"id\": 0
  }' `
  https://<user_name>:<password>@<IP_address>/model/pdu/<pdu_id>/outlet/<outlet_id>

指定したアウトレットの状態がJSON形式で返ってきます。
"powerState": 1がアウトレットの状態です。
0であればOFF、1であればONです。

レスポンス:

{
  "jsonrpc": "2.0",
  "result": {
    "_ret_": {
      "available": true,
      "powerState": 1,
      "switchOnInProgress": false,
      "cycleInProgress": false,
      "isLoadShed": false,
      "isSuspended": false,
      "hasInrushWaveform": false,
      "ledState": {
        "red": false,
        "green": false,
        "blinking": false
      },
      "lastPowerStateChange": 1682866800
    }
  },
  "id": 0
}

アウトレットのON/OFFを切り替える

アウトレットのON/OFFを切り替えます。

リクエストを作ります。

  • "pstate"
    • アウトレットのON/OFFを指定します。
    • OFFにするなら0
    • ONにするなら1

ここでは"pstate": 1でONにしてみます。
URLは先程と同じです。

リクエスト:

# Bash
curl -skd \
  '{
    "jsonrpc": "2.0",
    "method": "setPowerState",
    "params": {
      "pstate": 1
    },
    "id": 0
  }' \
  https://<user_name>:<password>@<IP_address>/model/pdu/<pdu_id>/outlet/<outlet_id>
# PowerShell
curl.exe -skd `
  '{
    \"jsonrpc\": \"2.0\",
    \"method\": \"setPowerState\",
    \"params\": {
      \"pstate\": 1
    },
    \"id\": 0
  }' `
  https://<user_name>:<password>@<IP_address>/model/pdu/<pdu_id>/outlet/<outlet_id>

実行結果が返ってきます。"_ret_": 0であれば成功です。

  • "_ret_"
    • 0: OK
    • 1: the outlet is not switchable
    • 3: the outlet is disabled

レスポンス:

{
  "jsonrpc": "2.0",
  "result": {
    "_ret_": 0
  },
  "id": 0
}

おわり

curlコマンドでPX3のAPIを呼び出し、アウトレットの操作ができるようになりました。
私はNode-redとAlexa Home Skill Bridgeを使用してスマートプラグのように使用しています。

今回はアウトレットの状態変更を試しましたが、他にも使用できるURIがたくさんあります。